博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
254个VIP时脚本生成keepalived.conf配置文件
阅读量:7115 次
发布时间:2019-06-28

本文共 4909 字,大约阅读时间需要 16 分钟。

    部署LVS+Keepalived高可用时,因业务需求一共要配置254VIP,每个VIP9台真实server,每台真实server还要配置些参数。如果手动写,要累死去了。所以编写了如下生成配置脚本。这个脚本生成的文件,在另一台高可用LVS上使用时,需要交换两个实例中的statepriority参数,成互为主从状态。

脚本一、自动生成keepalived.conf文件 

#!/bin/sh#author:  by yangrong 2014-11-09#function: auto buildkeepalived.conf #这里定义IP断前缀,定义VIP与RIP范围virtual_ip_1=`seq 13 130`virtual_ip_2=`seq 131 253`real_ip=`seq 4 12`ip_pre="14.17.64."filename="keepalived.conf" #此处生成实例1配置echo "! ConfigurationFile for keepalivedvrrp_instance VI_1 {                           #定义一个实例    state MASTER                               #指定Keepalived的角色,MASTER表示此主机是主服务器 BACKUP表示此主机是备用服务器,所以设置priority时要注意MASTER比SLAVE高。    interface p1p1                             #指定监测网络的接口,当LVS接管时,将会把IP地址添加到该网卡上。    virtual_router_id 51                       #虚拟路由标识,同一个vrrp实例使用唯一的标识,同一个vrrp_instance下,MASTER和BACKUP必须一致。    priority 120                               #指定这个实例优先级    advert_int 2                               #心跳报文发送间隔        notify_master /scripts/add_ip_13_130.sh    #这里是调用添加VIP的脚本,因为keepalived只能配置20个VIP。    notify_backup /scripts/del_ip_13_130.sh    #这里是调用删除VIP的脚本。    authentication {        auth_type PASS                         #设置验证类型,主要有PASS和AH两种        auth_pass 1111                         #设置验证密码,同一个vrrp_instance下,MASTER和BACKUP的密码必须一致才能正常通信    }    virtual_ipaddress {                        #设置虚拟IP地址,可以设置多个虚拟IP地址,每行一个 "  >> $filename for vip_1 in $virtual_ip_1                     #这个循环输入的是实例1的VIPdo    echo "      ${ip_pre}${vip_1}/24">>$filename     done echo "    }} #此处生成实例2配置vrrp_instance VI_2 {    state BACKUP    interface p1p1    virtual_router_id 52    priority 80    advert_int 2    notify_master /scripts/add_ip_131_253.sh   #调用添加VIP的脚本    notify_backup /scripts/del_ip_131_253.sh   #调用删除VIP的脚本    authentication {        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {"  >> $filename for vip_2 in $virtual_ip_2                     #这个循环是生成实例2的VIP     do         echo "       ${ip_pre}${vip_2}/24">>$filename     done echo "    }}" >>$filename   for vip_1 in $virtual_ip_1                    #这个循环输入的是实例1的VIP,共130个VIPdo echo "# VIP and real IP start----------------------virtual_server${ip_pre}$vip_1 0 {             #设置虚拟服务器,需要指定虚拟IP地址和服务端口,IP与端口之间用空格隔开     delay_loop 6                              #设置运行情况检查时间,单位是秒    lb_algo wrr                               #设置负载调试算法,这里设置为wrr即加权论询算法    lb_kind DR                                #设置LVS实现负载均衡的机制,有NAT,TUN和DR三个模式可选    nat_mask 255.255.255.0    persistence_timeout 50                    #设置会话保持时间,单位是秒    protocol TCP                              #指定转发协议类型,有TCP和UDP两种    " >> $filename      for rip in $real_ip                      #这个循环是输入RIP配置,一共9个RIP配置信息     do     echo "  real_server${ip_pre}$rip 0 {     #配置服务节点1,需要指定real server的真实IP地址和端口         weight 1                             #配置服务节点的权值,         TCP_CHECK {         connect_timeout 3                    #表示3秒无响应超时         nb_get_retry 3                       #表示重试次数         delay_before_retry 3                 #表示重试间隔         connect_port 80                 }          }     " >>$filename     doneecho "}" >>$filename   done   for vip_2 in $virtual_ip_2                     #这里循环输入的是实例2的VIP,共124个VIP。do echo "# VIP and real IP start----------------------virtual_server${ip_pre}$vip_2 0 {             #设置虚拟服务器,需要指定虚拟IP地址和服务端口,IP与端口之间用空格隔开     delay_loop 6                               #设置运行情况检查时间,单位是秒    lb_algo wrr                                #设置负载调试算法,这里设置为wrr即加权论询算法    lb_kind DR                                 #设置LVS实现负载均衡的机制,有NAT,TUN和DR三个模式可选    persistence_timeout 50                     #设置会话保持时间,单位是秒    protocol TCP                               #指定转发协议类型,有TCP和UDP两种    " >> $filename         for rip in $real_ip                    #这里循环的是RIP配置,共9个RIP配置。        do        echo "  real_server ${ip_pre}$rip 0 {  #配置服务节点1,需要指定real server的真实IP地址和端口                weight 1                       #配置服务节点的权值,                TCP_CHECK {                connect_timeout 3              #表示3秒无响应超时                nb_get_retry 3                 #表示重试次数                delay_before_retry 3           #表示重试间隔                connect_port 80                         }                 }        " >>$filename        doneecho "}">>$filenamedone

 

脚本二、添加删除VIP

在上述配置文件中,调用了添加VIP的脚本,内容如下:

# cat add_ip_1_130.sh #!/bin/shvirtual_ip=`seq 1 127`ip_pre="14.17.64."for ip in ${virtual_ip}do   ip addr add local ${ip_pre}${ip}/32 dev bond0   #添加VIP,我这是添加在bond0上done

#删除VIP的脚本,把上面循环中的添加VIP的命令改为后面这句删除的命令即可:  ip  addr del ${ip_pre}${ip}/32 dev bond0

脚本三、使用nc命令对所以VIP连通性测试

所有VIP都配置上了后,得对所有VIP进行访问测试,检查80端口是否能正常访问。事实上我使用脚本自动测试时,发现有一个IP在电信网段被封禁了,所以测试是必须的不然影响业务就麻烦了。

[root@yang scripts]# catport_open_check.sh #!/bin/sh#by yangrong ip_pre="14.17.64"ip_num=`seq 13 253`port=80 for num in $ip_numdo    result=`nc -z -w 5 ${ip_pre}${num}  $port|grep succee|wc -l`    echo "${ip_pre}${num}   $result " >>/tmp/port.txt    #如果返回结果是1,则打开,返回结果是0,则关闭。    done

 

 

转载地址:http://hlyel.baihongyu.com/

你可能感兴趣的文章
linux创建进程和等待进程退出
查看>>
QT---系统托盘图标不显示原因
查看>>
[Unity3d][NGUI]两种思路解决AssetBundle的依赖关系.
查看>>
c中常用的关键字static const volatile
查看>>
格式化字符串攻击
查看>>
Nginx开启Gzip压缩大幅提高页面加载速度
查看>>
java的File类的 delete方法删不掉文件的原因分析
查看>>
Ubuntu下导入PySpark到Shell和Pycharm中(未整理)
查看>>
sqlHelper的增删改查
查看>>
附加到iis进程调试时找不到w3wp.exe
查看>>
java中的nextLine
查看>>
详解Javascript的继承实现(二)
查看>>
编程语言的进化
查看>>
iOS自己定义返回button(不影响返回手势)
查看>>
分布式系统常见的事务处理机制
查看>>
程序员是一个什么能力都可以发挥作用的平台
查看>>
hosts 不启作用的解决办法
查看>>
命令模式 Command 行为型 设计模式(十八)
查看>>
Django | QuerySet API reference | Django documentation
查看>>
【并发服务器系列】3 epoll模型
查看>>