设为首页 收藏本站
查看: 1182|回复: 0

[经验分享] keepalived配置高可用集群

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-9-11 10:40:29 | 显示全部楼层 |阅读模式
准备工作
1、设备分配
192.168.137.100    master   
192.168.137.150    backup   
192.168.137.254    vip   
2、两台设备均安装keepalived
1
yum install -y keepalived



3、两台设备均安装nginx
1
yum install -y nginx




主设备配置

1、编辑keepalived配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[iyunv@juispan ~]# > /etc/keepalived/keepalived.conf
[iyunv@juispan ~]# vi /etc/keepalived/keepalived.conf
global_defs {
   notification_email {          ##出现问题后接收提示的邮箱
     test@test.com
   }
   notification_email_from root@test2.com  ##发件人
   smtp_server 127.0.0.1                   ##邮件服务器
   smtp_connect_timeout 30                 ##延时
   router_id LVS_DEVEL
}
vrrp_script chk_nginx {                    ##检查服务状态
    script "/usr/local/sbin/check_ng.sh"
    interval 3
}
vrrp_instance VI_1 {                       ##定义master相关配置
    state MASTER                           ##设定角色
    interface ens33                        ##指定发送vrrp包的网卡
    virtual_router_id 51                   ##定义VRRP RID,要和从设备一致
    priority 100                           ##优先级,越大越优
    advert_int 1
    authentication {
        auth_type PASS                     ##定义认证类型
        auth_pass 123456                   ##认证口令
    }
    virtual_ipaddress {                    ##VIP
        192.168.137.254
    }
    track_script {                        
        chk_nginx                          ##加载定义的chk_nginx脚本
    }
}



2、编辑监控脚本

如果进程里面没发现nginx那就代表着服务宕机了,然后脚本自动的再次启动nginx服务。 如果服务还是不可以启动,就把启动报错日志输入到指定的位置,然后为防止“脑裂”就把keepalived也关闭。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[iyunv@juispan ~]# vi /usr/local/sbin/check_ng.sh
#!/bin/bash
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; then
        /etc/init.d/nginx start
        n2=`ps -C nginx --no-heading|wc -l`
        if [ $n2 -eq "0"  ]; then
                echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
                systemctl stop keepalived
        fi
fi
[iyunv@juispan ~]# chmod 755 /usr/local/sbin/check_ng.sh



3、启动服务

1
2
3
4
5
6
[iyunv@juispan ~]# systemctl start  keepalived
[iyunv@juispan ~]# ps aux | grep keep
root      2416  0.0  0.1 111708  1316 ?        Ss   19:29   0:00 /usr/sbin/keepalived -D
root      2417  0.0  0.2 111708  2560 ?        S    19:29   0:00 /usr/sbin/keepalived -D
root      2418  0.0  0.1 111708  1616 ?        S    19:29   0:00 /usr/sbin/keepalived -D
root      2479  0.0  0.0 112664   976 pts/0    S+   19:29   0:00 grep --color=auto keep



4、清空策略并验证

1
2
3
4
5
6
7
8
9
10
11
12
13
[iyunv@juispan ~]# systemctl stop firewalld
[iyunv@juispan ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[iyunv@juispan ~]# setenforce 0
[iyunv@juispan ~]# less /var/log/messages       ##查看日志
[iyunv@juispan ~]# ip addr
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:0c:4d:a8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.137.100/24 brd 192.168.137.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.137.254/32 scope global ens33     ##已加载VIP
       valid_lft forever preferred_lft forever




从设备配置
1、关闭防火墙
1
2
3
4
5
[iyunv@localhost ~]# systemctl stop firewalld
[iyunv@localhost ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
[iyunv@localhost ~]# setenforce 0



2、配置keepalived文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[iyunv@localhost ~]# > /etc/keepalived/keepalived.conf
[iyunv@localhost ~]# vi /etc/keepalived/keepalived.conf
global_defs {
   notification_email {
     test@test.com
   }
   notification_email_from root@test.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script chk_nginx {
    script "/usr/local/sbin/check_ng.sh"
    interval 3
}
vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.137.254
    }
    track_script {
        chk_nginx
    }
}



3、编写启动脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[iyunv@localhost ~]# vi /usr/local/sbin/check_ng.sh
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; then
        systemctl start nginx
        n2=`ps -C nginx --no-heading|wc -l`
        if [ $n2 -eq "0"  ]; then
                echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
                systemctl stop keepalived
        fi
fi
[iyunv@localhost ~]# chmod 755 /usr/local/sbin/check_ng.sh



4、启动服务

1
2
3
4
5
6
[iyunv@localhost ~]# systemctl start keepalived
[iyunv@localhost ~]# ps aux | grep keepalived
root      3266  0.0  0.1 111708  1308 ?        Ss   21:30   0:00 /usr/sbin/keepalived -D
root      3267  0.0  0.2 111708  2548 ?        S    21:30   0:00 /usr/sbin/keepalived -D
root      3268  0.1  0.1 111708  1620 ?        S    21:30   0:00 /usr/sbin/keepalived -D
root      3321  0.0  0.0 112664   976 pts/1    S+   21:30   0:00 grep --color=auto keepalived




测试高可用
1、编辑nginx主页
1
[iyunv@juispan ~]# echo "this is master" > /usr/share/nginx/html/index.html



1
[iyunv@localhost ~]# echo "this is backup" > /usr/share/nginx/html/index.html



2、客户端测试

QQ截图20170911104008.png
3、主设备模拟宕机,关闭keepalived服务
QQ截图20170911104012.png
除了配置nginx的高可用,也可以配置其他服务的高可用,比如mysql的高可用,但前提是一定要保证双方的数据是一致的。如果主mysql宕机,从mysql的数据一定会和主设备不一致。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-404306-1-1.html 上篇帖子: keepalived+nginx+tomcat的简单部署 下篇帖子: keepalived服务配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表