Keepalived + HAProxy- 基础配置.note

noteId: B0AE3516064A41E28161AF7B38FEF582 · 原始路径:/ALL/Linux - A模块/服务配置/Keepalived 高可用服务/Keepalived + HAProxy- 基础配置.note · 图片:20 · 附件待处理:0

 
·准备环境:
在 前面 haproxy的基础上,将haproxy克隆,只需要更改ip地址即可
 
 
一、基础配置 Keepalived:
 
apt install -y keepalived
 
1、配置 Keepalived:
如果要再 Keepalived中配置多个虚拟IP,那么只需要修改 virtual_router_id 即可,让他们不相同就能配置多个了
 
(1)配置 Master:
cd /etc/keepalived/
cp keepalived.conf.sample keepalived.conf
vim /etc/keepalived.conf
虚拟IP一定要加上掩码,否则会变成 /32 位的
 
 
(2)配置 Backup:
cd /etc/keepalived/
cp keepalived.conf.sample keepalived.conf
vim /etc/keepalived.conf
# 将优先级调低(比Master低)
 
 
(3)在 Master 上查看虚拟IP(此时虚拟IP应该出现在优先级高的设备上):
ip a
可以看到此时该接口下有两个IP,一个是该接口本身的IP地址,一个是虚拟出的虚拟IP地址
 
(4)而此时 Backup 上是没有虚拟IP的:
ip a
 
 
(5)手动关闭 Master 上的 Keepalived,查看 Backup 是否有了 虚拟IP地址:
Master:
    systemctl stop keepalived
Backup:
    ip a
可以看到,此时Backup上已经出现了虚拟IP
 
 
(6)在其它机器上进行 ping测试:
无论虚拟IP在 Master上,还是 Backup上,都是应该能够ping通的
 
 
 
 
二、配置 Keepalived 检测 HAProxy状态,以达到自动切换:
刚刚上面配置的是需要手动进行切换,接下来将配置通过 track 检测,进行自动切换:
 
 
1、配置 Master:
 
(1)复制模板:
vim /usr/share/doc/keepalived/samples/keepalived.conf.vrrp.localcheck
 
·随便复制一个模板:
 
 
(2)配置 Keepalived:
vim /etc/keepalived/keepalived.conf
# 将其复制并稍加修改
注意:vrrp_script 定义的名称不要有大写,测试时发现无法读取到大写名称
 
重启服务
 
 
2、配置 Backup:
 
(1)将 Master 的配置 复制道 Backup上,再稍作修改:
Master:
    scp /etc/keepalived/keepalived.conf root@192.168.20.253:/etc/keepalived/keepalived.conf
Backup:
# 将优先级改为99:
 
重启服务
 
 
3、进行 故障转移抢占 测试:
 
(1)stop关闭 Master检测的 HAProxy,查看是否自动切换:
Master:
    systemctl stop haproxy
    # 等待5秒
    ip a
    # 此时虚拟IP应该消失不见了
 
 
 
Backup:
    # 等待几秒时间
    ip a
切换成功!
 
 
(2)在客户端上进行访问:
 
 
4、进行 故障转移恢复 测试:
 
(1)将 Master 监听的 HAProxy 服务重新启用,查看是否恢复回来:
Master:
    systemctl start haproxy
    # 等待几秒
    ip a
 
 
 
Backup:
    ip a
    # 此时 Backup 上应该没有了 虚拟IP
 
 
(2)在 客户端上进行访问网页:
可以发现,该切换对于客户端来说是无感的,顶多有一点延迟
 
 
 
三、使用 Ansible 配置 集群:
 
1、配置 Ansible 基础连接:
 
(1)配置 本机不检测 ssh指纹:
vim /etc/ssh/ssh_config
 
 
 
apt install -y ansible python3 python3-passlib
mkdir /etc/ansible/playbook -p
mkdir /etc/ansible/file
touch /etc/ansible/ansible.cfg
touch /etc/ansible/hosts
 
(2)配置 ansible配置文件:
vim /etc/ansible/ansible.cfg
 
(3)编写 hosts 文件:
vim /etc/ansible/hosts
 
 
2、先在 被控端上配置好 服务,然后 scp 传到Ansible主控端上:
 
(1)Web:
scp /etc/nginx/sites-enabled/default root@192.168.10.30:/etc/ansible/file
 
(2)CA:
scp ~/newcert.pem root@192.168.10.30:/etc/ansible/file
scp ~/newkey.pem root@192.168.10.30:/etc/ansible/file
scp ~/demoCA/cacert.pem root@192.168.10.30:/etc/ansible/file/ca.crt
 
(3)HAProxy:
scp /etc/haproxy/haproxy.cfg root@192.168.10.30:/etc/ansible/file
 
(4)Master-Keepalived:
scp /etc/keepalived/keepalived.conf root@192.168.10.30:/etc/ansible/file/Master-keepalived.conf
 
(5)Backup-Keepalived:
scp /etc/keepalived/keepalived.conf root@192.168.10.30:/etc/ansible/file/Backup-keepalived.conf
 
 
3、编写 Ansible 剧本:
vim 01-Web.yml