“lnmap实战之负载均衡架构(无高可用)”之新增keepalived高可用
我之前有一篇”lnmap实战之负载均衡架构(无高可用)“博客是专门部署了lanmap,之前没有做高可用,那么我们现在就把高可用补上去吧
这样我们照着之前的文档从新部署一下 1.机器结构如下:
192.168.42.150 node0 [负载均衡器] 192.168.42.151 node1 [负载均衡器 新增] 192.168.42.152 node2 [web1] 192.168.42.153 node3 [web2] 192.168.42.154 node4 [nfs 共享存储] 192.168.42.155 node5 [memcached session存储] 192.168.42.156 node6 [mariadb]
我们在此基础之上新增一台nginx[负载均衡器]
我们此次是针对这两台nginx负载均衡器做高可用
2.我们依照上面的机器结构和之前的部署文档,把”lnmap实战之负载均衡架构(无高可用)”部署出来,部署出来,测试没问题之后我们在node1节点上安装nignx
安装方法和node0一样
node1操作:
(1).安装nginx
yum install nginx -y
(2).备份nginx.conf
cp /etc/nginx/nginx.conf{,.back}
(3).将node0的nginx配置文件cp一份到node1 ->[记得是在node0上操作]
scp /etc/nginx/nginx.conf 192.168.42.151:/etc/nginx/ cd /etc/nginx/conf.d/ scp *.conf 192.168.42.151:/etc/nginx/conf.d/
(4).更改node1上的hosts文件
echo "192.168.42.151 www.test.com">>/etc/hosts echo "192.168.42.151 test.discuz.com">>/etc/hosts cat /etc/hosts nginx -t nginx -s reload
3.nginx+keepalived高可用
node0,node1 关闭nignx
node0:
(1).安装keepalived
yum install keepalived -y
(2).配置keepalived
配置如下:
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node0
vrrp_mcast_group4 224.1.101.23
}
#存在文件时,检测成功,即执行降级;否则不存在,全部退出;实现服务器切换
vrrp_script chk_down{
script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
interval 1
weight -10
fall 1
rize 1
}
#脚本,健康状态检测,检测nginx是否存活
vrrp_script chk_nginx {
script "killall -0 nginx && exit 0 || exit 1"
interval 1
weight -10
fall 1
rise 1
}
vrrp_instance sr1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass rEiszbuO
}
virtual_ipaddress {
192.168.42.182/24 dev ens33 label ens33:0
}
#脚本调用
track_script {
chk_down
chk_nginx
}
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}
node1:
(1).安装keepalived
yum install keepalived -y
(2).配置keepalived
配置如下:
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node1
vrrp_mcast_group4 224.1.101.23
}
#存在文件时,检测成功,即执行降级;否则不存在,全部退出;实现服务器切换
vrrp_script chk_down{
script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
interval 1
weight -10
fall 1
rize 1
}
#脚本,健康状态检测,检测nginx是否存活
vrrp_script chk_nginx {
script "killall -0 nginx && exit 0 || exit 1"
interval 1
weight -10
fall 1
rise 1
}
vrrp_instance sr1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 96
advert_int 1
authentication {
auth_type PASS
auth_pass rEiszbuO
}
virtual_ipaddress {
192.168.42.182/24 dev ens33 label ens33:0
}
#脚本调用
track_script {
chk_down
chk_nginx
}
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}
调用脚本notify.sh:
cd /etc/keepalived/
[root@centos703 keepalived]# vim notify.sh
#!/bin/bash
#
contact='root@localhost'
notify() {
mailsubject="vrrp:$(hostname) to be $1"
mailbody="$(hostname) to be $1,vrrp transition, $(date)."
echo "$mailbody" | mail -s "$mailsubject" $contact
}
case $1 in
master)
notify master
systemctl start nginx
;;
backup)
notify backup
systemctl start nginx
;;
fault)
notify fault
systemctl stop nginx
;;
*)
echo "Usage: $(basename $0) {master|backup|fault}"
exit 1
;;
esac
6.node0,node1重新更改hosts解析
vim /etc/hosts 192.168.42.182 www.test.com 192.168.42.182 test.discuz.com
7.我们在node3,node4上是做了两个虚拟主机,因此我们在负载均衡上也是要做两个虚拟主机,并且需要把$host推送到后方的机器
test.conf 的内容如下:
server {
listen 80;
server_name www.test.com;
location / {
proxy_pass http://sshsrvs;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
add_header X-Via $server_addr;
add_header X-Accel $server_name;
}
}
discuz.conf的内容如下:
server {
listen 80;
server_name test.discuz.com;
location / {
proxy_pass http://sshsrvs;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
add_header X-Via $server_addr;
add_header X-Accel $server_name;
}
}
8.我们在浏览器中访问www.test.com ,test.discuz.com
是两个不同的网站记得在物理机需要做域名解析哦
原创文章,作者:srayban,如若转载,请注明出处:http://www.178linux.com/78538

