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

[经验分享] keepalived lvs 实现lvs高可用

[复制链接]

尚未签到

发表于 2018-12-30 13:59:56 | 显示全部楼层 |阅读模式
  keepalived 简介
  keepalived是借用VRRP协议来实现高可用性的,VRRP协议是解决单点故障,使路由器和层三交换机实现冗余功能。

  keepalived启动后会有三个进程
  父进程:内存管理,子进程管理等等
  子进程:VRRP子进程
  子进程:healthchecker子进程
  从图上可以看出,两个子进程都被系统WatchDog看管,两个子进程各自操作自己的事,healthchecker子进程负责检查各自服务器的健康程度,例如HTTP,LVS等等,如果healthchecker子进程检查到MASTER上服务不可用了,就会通知本机上的VRRP子进程,让他删除通告,并且去掉虚拟IP,转换为BACKUP状态
  环境准备
  1 操作系统
  centos6.4 x86_64
  2 实验拓扑

  3 服务器时间同步
[root@node1 ~]#ntpdate ntp.api.bz
[root@node2 ~]#ntpdate ntp.api.bz
[root@web1 ~]#ntpdate ntp.api.bz
[root@web2 ~]#ntpdate ntp.api.bz
  4 安装keepalived ipvsadm

[root@node1 ~]# yum install keepalived ipvsadm
  5 修改配置文件

! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.200.10
}
}
virtual_server 192.168.200.10 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
net_mask 255.255.255.0
protocol TCP
real_server 192.168.200.138 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.200.139 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
  6 复制配置文件到从服务器

[root@node1 ~]# scp /etc/keepalived/keepalived.conf 192.168.200.18:/etc/keepalived/keepalived.conf
  7 从服务器 安装keepalived ipvsadm

[root@node2 ~]# yum install keepalived ipvsadm
  8 修改配置文件

[root@node2 ~]# vim /etc/keepalived/keepalived.conf
state BACKUP
priority 99
  9 开启服务

[root@node1 ~]# service keepalived start
[root@node1 ~]# chkconfig --add keepalived
[root@node1 ~]# chkconfig keepalived on

[root@node2 ~]# service keepalived start
[root@node2 ~]# chkconfig --add keepalived
[root@node2 ~]# chkconfig keepalived on
  10  安装 http

[root@web1 ~]# yum install httpd
[root@web2 ~]# yum install httpd
  11 建立测试网页

[root@web1 html]# cd /var/www/html/
[root@web1 html]# vim index.html
this is web1
[root@web2 ~]# cd /var/www/html/
[root@web2 html]# vim index.html
this is web2
  12 启动服务

[root@web1 html]# service httpd start
[root@web1 html]# chkconfig --add httpd
[root@web1 html]# chkconfig httpd on
[root@web2 html]# service httpd start
[root@web2 html]# chkconfig --add httpd
[root@web2 html]# chkconfig httpd on
  13 修改内存参数 配置vip

[root@web1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@web1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@web1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@web1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@web1 ~]# ifconfig lo:0 192.168.200.10 broadcast 192.168.200.10 netmask 255.255.255.255 up
[root@web1 ~]# route add -host 192.168.200.10 dev lo:0

[root@web2 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@web2 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@web2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@web2 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@web2 ~]# ifconfig lo:0 192.168.200.10 broadcast 192.168.200.10 netmask 255.255.255.255 up
[root@web2 ~]# route add -host 192.168.200.10 dev lo:0
  14 查看相关vip  ipvs规则

[root@node1 ~]# ip addr
1: lo:  mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:3e:54:30 brd ff:ff:ff:ff:ff:ff
inet 192.168.200.17/24 brd 192.168.200.255 scope global eth0
inet 192.168.200.10/32 scope global eth0
inet6 fe80::20c:29ff:fe3e:5430/64 scope link
valid_lft forever preferred_lft forever

[root@node1 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.200.10:80 wrr
-> 192.168.200.138:80           Route   1      0          0         
-> 192.168.200.139:80           Route   1      0          0  
  15 测试
  web1

  web2

  停止master的keepalived服务 ,vip ipvs规则会切换到backup服务器上

[root@node1 ~]# service keepalived stop
[root@node2 ~]# ip addr
1: lo:  mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:af:d6:a0 brd ff:ff:ff:ff:ff:ff
inet 192.168.200.18/24 brd 192.168.200.255 scope global eth0
inet 192.168.200.10/32 scope global eth0
inet6 fe80::20c:29ff:feaf:d6a0/64 scope link
valid_lft forever preferred_lft forever
[root@node2 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.200.10:80 wrr
-> 192.168.200.138:80           Route   1      0          0         
-> 192.168.200.139:80           Route   1      0          0
  停止web1服务 ipvs规则会清除web1服务器

[root@web1 ~]# service httpd stop
[root@node1 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.200.10:80 wrr
-> 192.168.200.139:80           Route   1      0
  开启web1服务 ipvs自动会添加web1服务器
  [root@node1 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.200.10:80 wrr
  -> 192.168.200.138:80           Route   1      0          0         
  -> 192.168.200.139:80           Route   1      0




运维网声明 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-657638-1-1.html 上篇帖子: 使用keepalived实现haproxy的高可用 下篇帖子: keepalived+lvs配置示例
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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