设为首页 收藏本站

运维网

查看: 1920|回复: 3

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

  [复制链接]

尚未签到

发表于 2018-4-10 15:12:04 | 显示全部楼层 |阅读模式
准备工作

分别在主从上安装keepalived和nginx
yum install -y keepalived
yum install -y nginx
关闭主从上的防火墙和SELinux
systemctl stop firewalld
setenforce 0
配置主机

查看主机ip

[iyunv@lynn-04 ~]# ifconfig
ens33: flags=4163  mtu 1500
        inet 192.168.130.116  netmask 255.255.255.0  broadcast 192.168.130.255
        inet6 fe80::181c:4847:3f62:dc4c  prefixlen 64  scopeid 0x20
        ether 00:0c:29:60:ed:4a  txqueuelen 1000  (Ethernet)
        RX packets 11701  bytes 10394449 (9.9 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 13559  bytes 972155 (949.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 1  (Local Loopback)
        RX packets 86  bytes 6720 (6.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 86  bytes 6720 (6.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

清空主上keepalived配置文件/etc/keepalived/keepalived.conf

[iyunv@lynn-04 ~]# > /etc/keepalived/keepalived.conf

编辑主上配置文件/etc/keepalived/keepalived.conf

[iyunv@lynn-04 ~]# vim /etc/keepalived/keepalived.conf

加入以下内容:

global_defs {
   notification_email {
     aming@aminglinux.com
   }
   notification_email_from root@aminglinux.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 MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass aminglinux>com
    }
    virtual_ipaddress {
        192.168.130.100
    }
    track_script {
        chk_nginx
    }
}

定义主上监控脚本/usr/local/sbin/check_ng.sh

[iyunv@lynn-04 ~]# vim /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

更改主上/usr/local/sbin/check_ng.sh权限

[iyunv@lynn-04 ~]# chmod 755 /usr/local/sbin/check_ng.sh

启动主上keepalived

[iyunv@lynn-04 ~]# systemctl start keepalived
[iyunv@lynn-04 ~]# ps aux |grep keepalived
root       1741  0.0  0.1 120740  1404 ?        Ss   10:46   0:00 /usr/sbin/keepalived -D
root       1742  0.0  0.3 127476  3260 ?        S    10:46   0:00 /usr/sbin/keepalived -D
root       1745  0.0  0.3 131780  3116 ?        S    10:46   0:00 /usr/sbin/keepalived -D
root       1799  0.0  0.0 112676   988 pts/0    S+   10:47   0:00 grep --color=auto keepalived

为了区分主从的nginx需要把nginx的默认页做个标记

[iyunv@lynn-04 ~]# echo master > /data/wwwroot/default/index.html

在另一台机器使用从ip访问
得到下面结果

[iyunv@lynn-02 ~]# curl 192.168.130.116
master

配置从机

查看从机ip

[iyunv@lynn-06 ~]# ifconfig
ens33: flags=4163  mtu 1500
        inet 192.168.130.128  netmask 255.255.255.0  broadcast 192.168.130.255
        inet6 fe80::fef6:fd37:2682:fabc  prefixlen 64  scopeid 0x20
        ether 00:0c:29:af:03:e8  txqueuelen 1000  (Ethernet)
        RX packets 45666  bytes 48434560 (46.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 14753  bytes 1287938 (1.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 1  (Local Loopback)
        RX packets 80  bytes 6256 (6.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 80  bytes 6256 (6.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

清空从上配置文件/etc/keepalived/keepalived.conf

[iyunv@lynn-06 ~]# > /etc/keepalived/keepalived.conf

编辑从上配置文件/etc/keepalived/keepalived.conf

[iyunv@lynn-06 ~]# vim /etc/keepalived/keepalived.conf

加入下面内容

global_defs {
   notification_email {
     aming@aminglinux.com
   }
   notification_email_from root@aminglinux.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 aminglinux>com
    }
    virtual_ipaddress {
        192.168.130.100
    }
    track_script {
        chk_nginx
    }
}

定义从上监控脚本/usr/local/sbin/check_ng.sh

[iyunv@lynn-06 ~]# vim /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

更改从上/usr/local/sbin/check_ng.sh权限

[iyunv@lynn-06 ~]# chmod 755 /usr/local/sbin/check_ng.sh

启动从上keepalived

[iyunv@lynn-06 ~]# systemctl start keepalived
[iyunv@lynn-06 ~]# ps aux |grep keepalived
root       3589  0.0  0.1 120740  1400 ?        Ss   11:03   0:00 /usr/sbin/keepalived -D
root       3590  0.0  0.3 127476  3260 ?        S    11:03   0:00 /usr/sbin/keepalived -D
root       3591  0.0  0.3 131780  3124 ?        S    11:03   0:00 /usr/sbin/keepalived -D
root       3680  0.0  0.0 112676   988 pts/0    S+   11:03   0:00 grep --color=auto keepalived

为了区分主从的nginx需要把nginx的默认页做个标记

[iyunv@lynn-06 ~]# echo backup > /usr/share/nginx/html/index.html

在另一台机器使用从ip访问
得到下面结果

[iyunv@lynn-02 ~]# curl 192.168.130.128
backup

测试高可用

首先在主从keepalived都开启的情况
下查看得到vip在主机上 使用另一台机器通过vip访问得到master
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=
然后在主机keepalived关闭的情况下查看得到vip在从机上 使用另一台机器通过vip访问得到backup
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=
再次开启主机的keepalived情况下查看得到vip又回到主机上 使用另一台机器通过vip访问得到master
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

运维网声明 1、欢迎大家加入本站运维交流群:群①:263444886群②:197202523群③:485755530群④:201730672群⑤:202807635运维网交流群⑥:281548029
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须注明原文的出处
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、运维网 - 服务您的运维操作管理专家!
6、联系人Email:admin@yunvn.com 网址:www.iyunv.com

点击关注更多内容
累计签到:1 天
连续签到:1 天
发表于 2018-6-12 17:23:05 | 显示全部楼层
不是吧不能看

运维网声明 1、欢迎大家加入本站运维交流群:群①:263444886群②:197202523群③:485755530群④:201730672群⑤:202807635运维网交流群⑥:281548029
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须注明原文的出处
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、运维网 - 服务您的运维操作管理专家!
6、联系人Email:admin@yunvn.com 网址:www.iyunv.com

回复 支持 反对

使用道具 举报

累计签到:34 天
连续签到:1 天
发表于 2018-10-17 13:40:02 | 显示全部楼层
很详细,谢谢分享!

运维网声明 1、欢迎大家加入本站运维交流群:群①:263444886群②:197202523群③:485755530群④:201730672群⑤:202807635运维网交流群⑥:281548029
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须注明原文的出处
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、运维网 - 服务您的运维操作管理专家!
6、联系人Email:admin@yunvn.com 网址:www.iyunv.com

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则  允许回帖邮件提醒楼主

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

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

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

扫描微信二维码查看详情

客服 E-mail:kefu@yunvn.com

本站由青云提供云计算服务

运维网--中国最专业的运维工程师交流社区

京ICP备14039699号-1 Copyright © 2012-2018

使用手机软件扫描微信二维码

关注我们可获取更多热点资讯

Good good study day day up !


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


独家合作伙伴: 青云cloud

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