企业级自动化部署方案——ansible实现lvs+keepal…
2020-03-31 16:01:14来源:博客园 阅读 ()
企业级自动化部署方案——ansible实现lvs+keepalived高可用架构
耗时8小时左右
总体设计
ansible-playbook目录结构
入口文件
因为不同的主机配置不同,所以按主机分类设置了3个role
[root@ansible ~]# cat /etc/ansible/work_dir/lvs.yaml
- hosts: [nfs]
roles:
- nfs
- hosts: [rs]
roles:
- web
- hosts: [ds]
roles:
- keepalived
NFS服务playbook结构
[root@ansible ~]# tree /etc/ansible/roles/nfs
/etc/ansible/roles/nfs
├── files
├── handlers
│ └── main.yaml
├── tasks
│ └── main.yaml
├── templates
└── vars
└── main.yaml
WEB服务playbook结构
[root@ansible ~]# tree /etc/ansible/roles/web
/etc/ansible/roles/web
├── files
├── handlers
│ └── main.yaml
├── tasks
│ └── main.yaml
├── templates
│ ├── ifcfg-lo.j2
│ └── rs_test.j2
└── vars
└── main.yaml
Keepalived+LVS服务playbook结构
[root@ansible ~]# tree /etc/ansible/roles/keepalived
/etc/ansible/roles/keepalived
├── files
├── handlers
├── tasks
│ └── main.yaml
├── templates
│ ├── keepalived_conf.j2
│ └── keepalived_service.j2
└── vars
└── main.yaml
执行过程
[root@ansible work_dir]# pwd
[root@ansible work_dir]# ansible-playbook lvs.yaml
结果测试
1.查看浮动ip
在ds1 (主) 上查看IP信息
在ds2(备) 上查看IP信息
浮动IP在负载均衡主节点上
在网页上访问测试
通过LVS访问NFS(把NFS挂载到了/var/www/html/nfs)
2.测试故障切换
[root@ftp ~]# while :; do curl 192.168.213.200;sleep 2;done
停止rs1的httpd服务,业务没有中断
当rsl systemctl start httpd
停止httpd服务后,所有的访问请求都分配到rs2上;当rsl启动httpd服务,所有的访问请求都平均分配到两个rs节点上(wrr算法,weight都为1)
在sleep 2的时候会出现2次访问不到的情况
curl: (7) Failed connect to 192.168.213.200:80; Connection refused
在sleep 3/4/5的时候会出现1次访问不到的情况
在sleep 6的时候访问正常
可见,这个节点移除是需要时间的
停止ds1(主)的keepalived服务,服务不受影响,vip漂移到了ds2(备)上
当rsl重启keepalived服务后,vip会漂移回来
实现过程问题记录
1.在rs1,rs2上绑定VIP到回环网卡
2.调整内核参数,关闭arp响应要 sysctl -p
3.keepalived首次启动失败
通过日志文件/var/log/messages
查看错误
(Line 12) WARNING - interface eth0 for vrrp_instance VI_1 doesn’t exist
问题: keepalived新版本会检查/etc/keepalived/keepalived.conf配置文件,配置有误会导致程序启动失败(如默认的配置文件中网卡为eth0,而实际网卡为ens33)
解决方法: 修改配置文件后再启动进程(用以下方法可以方便的修改网卡名称)
#/etc/ansible/roles/keepalived/templates/keepalived_conf.j2
interface {{ net_name }}
4.systemctl无法彻底停掉keepalived
现象描述: 无法正常stop掉keepalived进程,再次启动时虽然可以启动,但进程状态里面会提示:Can’t open PID file /var/run/keepalived.pid (yet?) after start
问题: systemd的启动脚本有问题,无法创建PID文件
解决方法: 注释掉启动脚本中的如下行,重载 systemctl daemon-reload
#/lib/systemd/system/keepalived.service
KillMode=process #只杀掉程序的主进程,不管打开的子进程
这个问题可能和keepalived的版本有关,不一定都需要处理这个问题
5.keepalived开启顺序影响部分配置
当2台服务器都设置为BACKUP模式时,先开启keepalived进程的会先绑定VIP,后开启的即使优先级高也不会去抢占,除非先开启的挂掉,即双BACKUP模式下,要先开启优先级高的服务器的keepalived进程(个人验证的是这样的)
6.keepalived中的两种模式
(1)master->backup模式
一旦主库宕机,虚拟ip会自动漂移到从库,当主库修复后,keepalived启动后,还会把虚拟ip抢占过来,即使设置了非抢占模式(nopreempt)抢占ip的动作也会发生。
(2)backup->backup模式
当主库宕机后虚拟ip会自动漂移到从库上,当原主库恢复和keepalived服务启动后,并不会抢占新主的虚拟ip,即使是优先级高于从库的优先级别,也不会发生抢占。为了减少ip漂移次数,通常是把修复好的主库当做新的备库。
在数据库的应用场景中,不建议数据库的频繁切换,可配置为keepalived的VIP不抢占模式
vars变量有部分重复定义,但只写一个role中对集群不同主机的配置会有影响,暂时未想到解决办法
执行有些慢,可能是因为开了7台虚拟机的原因,也可能是网络原因
原文链接:https://www.cnblogs.com/zhaoya2019/p/12609142.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:yum安装zabbix4.2
下一篇:Linux常用的命令收藏
- 附020.Nginx-ingress部署及使用 2020-06-02
- corosync v1 + pacemaker高可用集群部署(二)资源配置(VIP+ 2020-05-28
- Nginx + Docker 多阶段构建的部署学习 2020-05-25
- 私有云技术 2020-05-23
- 运维相关 2020-05-16
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash