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

[经验分享] keepalived支持LVS高可用服务以及支持web服务的高可用

[复制链接]

尚未签到

发表于 2018-12-30 15:15:39 | 显示全部楼层 |阅读模式
keepalived支持LVS高可用服务

准备:四台主机,其中两台为高可用节点,IP地址分别外172.16.86.4172.16.86.5,两台为real serverIP地址分别为172.16.86.7172.16.86.8



一、首先让两台高可用节点时间同步,然后下载安装包并安装。我们这里是老师准备好的,你们可以在网上自行下载。
节点1
[root@node1 ~]# service ntpd stop
[root@node1 ~]# ntpdate 172.16.0.1
[root@node1 ~]# date
Thu May 16 11:01:39 CST 2013
[root@node1 ~]# lftp 172.16.0.1
lftp 172.16.0.1:~> cd pub/Sources/keepalived/
lftp 172.16.0.1:/pub/Sources/keepalived> get get keepalived-1.2.7-5.el5.i386.rpm
[root@node1 ~]# yum -y --nogpgcheck localinstall keepalived-1.2.7-5.el5.i386.rpm
[root@node1 ~]# scp keepalived-1.2.7-5.el5.i386.rpm node2:/root/


节点2
[root@node2 ~]# service ntpd stop
[root@node2 ~]# ntpdate 172.16.0.1
[root@node2 ~]# date
Thu May 16 11:01:39 CST 2013
[root@node2 ~]#yum -y --nogpgcheck localinstall keepalived-1.2.7-5.el5.i386.rpm

二、为两台real server提供web服务提供网页,并配置DR模型。
RS1
[root@localhost ~]# yum install httpd -y
[root@localhost ~]#echo "RS1.magedu.com" > /var/www/html/index.html
[root@localhost ~]#echo 2 > proc/sys/net/ipv4/conf/all/arp_announce
[root@localhost ~]#echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
[root@localhost ~]#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@localhost ~]#echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
[root@localhost ~]# ifconfig lo:0 172.16.86.1 broadcast 172.16.86.1 netmask 255.255.255.255 up
[root@localhost ~]# route add -host 172.16.86.1 dev lo:0
[root@localhost ~]# ifconfig

RS2
[root@localhost ~]# yum install httpd -y
[root@localhost ~]#echo "RS2.magedu.com" > /var/www/html/index.html
[root@localhost ~]#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@localhost ~]#echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
[root@localhost ~]#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@localhost ~]#echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
[root@localhost ~]# ifconfig lo:0 172.16.86.1 broadcast 172.16.86.1 netmask 255.255.255.255 up
[root@localhost ~]# route add -host 172.16.86.1 dev lo:0
[root@localhost ~]# ifconfig

三、编辑两台高可用节点上keepalived的配置文件
节点1
[root@node1 ~]# cd /etc/keepalived/
[root@node1 keepalived]# ls
keepalived.conf  keepalived.conf.haproxy_example  notify.sh
[root@node1 keepalived]# vim keepalived.conf


! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from root@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass password
}
virtual_ipaddress {
172.16.86.1/16 dev eth0 label eth0:0
}
}
virtual_server 172.16.86.1 80 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.0.0
protocol TCP
real_server 172.16.86.7 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 2
nb_get_retry 3
delay_before_retry 1
}
}
real_server 172.16.86.8 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 2
nb_get_retry 3
delay_before_retry 1
}
}
}
[root@node1 keepalived]# scp keepalived.conf node2:/etc/keepalived/

节点2
[root@node1 keepalived]# vim keepalived.conf

! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from root@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass password
}
virtual_ipaddress {
172.16.86.1/16 dev eth0 label eth0:0
}
}
virtual_server 172.16.86.1 80 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.0.0
protocol TCP
real_server 172.16.86.7 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 2
nb_get_retry 3
delay_before_retry 1
}
}
real_server 172.16.86.8 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 2
nb_get_retry 3
delay_before_retry 1
}
}
}


四、在两台高可用节点上启动keepalived服务,并安装ipvsadm工具
[root@node1 ~]# service keepalived start
[root@node2 ~]# service keepalived start
如果节点1成为主的,那么节点1就会有IP地址

[root@node1 ~]# yum install ipvsadm -y
[root@node2 ~]# yum install ipvsadm -y
查看生成的规则:

网页测试:

刷新网页:

测试:如果把RS2web服务关掉
[root@station51 ~]# service httpd stop
Stopping httpd:                                            [  OK  ]
结果:


如果real server都出现故障,此时应该提供一个提示网页,所以要在这两台高可用节点上也安装web服务用来提供一个提示网页。
节点1
[root@node1 ~]# yum  -y install httpd
[root@node1 ~]#echo "Wronging now" > /var/www/html/index.html
[root@node1 ~]# service httpd start
节点2
[root@node2 ~]# yum  -y install httpd
[root@node2 ~]#echo "Wronging now" > /var/www/html/index.html
[root@node2 ~]# service httpd start
配置节点1和节点2keepalived配置文件
[root@node1 keepalived]# vim keepalived.conf


测试:所有real server都出现故障时登陆网页的状况,先把real server 上的web服务全部关掉。
[root@localhost ~]# service httpd stop     ##关闭RS1web服务
Stopping httpd:                                            [  OK  ]
[root@localhost ~]# service httpd stop ##关闭RS2web服务
Stopping httpd:                                            [  OK  ]
登录网页:

此时如果real service上的web服务又重新启动了,那么此时再访问就会去访问real server 上的web服务器提供的网页

模拟高可用节点坏掉的情境,编辑配置文件使其能够手动关闭其中任意一个高可用节点。
[root@node1 keepalived]# vim keepalived.conf

节点2的配置内容和节点1一样,然后从新启动服务
[root@node1 keepalived]# service keepalived restart
[root@node2 keepalived]# service keepalived restart
节点1:此时地址在节点1

/etc/keepalived目录下创建一个名为down的文件
[root@node1 keepalived]# touch down
节点1

节点2:此时地址已经转移到节点2

Keepalived支持web服务高可用功能

一、这里就用不到real server,分别在两个节点安装web服务,并提供网页。
[root@node1 ~]# service keepalived stop
[root@node1 ~]# yum -y  install httpd
[root@node1 ~]# echo "node1" > /var/www/html/index.html
[root@node1 ~]# service httpd start
测试网页:



[root@node2 ~]# service keepalived stop
[root@node2 ~]# yum -y  install httpd
[root@node2 ~]# echo "node2" > /var/www/html/index.html
[root@node1 ~]# service httpd start
测试网页:

二、编辑节点1keepalived的配置文件并提供脚本,编辑好后并复制给节点2一份。
[root@node1 keepalived]# vim keepalived.conf

! Configuration File for keepalived
global_defs {
notification_email {
linuxedu@foxmail.com
mageedu@126.com
}
notification_email_from kanotify@magedu.com
smtp_connect_timeout 3
smtp_server 127.0.0.1
router_id LVS_DEVEL
}
vrrp_script chk_httpd {
script "killall -0 httpd"
interval 2
weight -2
fall 2
rise 1
}
vrrp_script chk_schedown {
script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
interval 2
weight -2
}
vrrp_instance VI_1 {
interface eth0
state MASTER
priority 101
virtual_router_id 51
garp_master_delay 1
authentication {
auth_type PASS
auth_pass password
}
track_interface {
eth0
}
virtual_ipaddress {
172.16.86.1/16 dev eth0 label eth0:0
}
track_script {
chk_httpd
chk_schedown
}
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}


脚本:在/etc/keepalived目录下提供一个名为notify.sh脚本
[root@node1 keepalived]# vim notify.sh

#!/bin/bash
# Author: MageEdu
# description: An example of notify script
ifalias=${2:-eth0:0}
interface=$(echo $ifalias | awk -F: '{print $1}')
vip=$(ip addr show $interface | grep $ifalias | awk '{print $2}')
#contact='linuxedu@foxmail.com'
contact='root@localhost'
workspace=$(dirname $0)
notify() {
subject="$ip change to $1"
body="$ip change to $1 $(date '+%F %H:%M:%S')"
echo $body | mail -s "$1 transition" $contact
}
case "$1" in
master)
notify master
exit 0;;
backup)
notify backup
/etc/rc.d/init.d/httpd restart
exit 0;;
fault)
notify fault
exit 0;;
*)
echo 'Usage: $(basename $0) {master|backup|fault}'
exit 1;;
esac

[root@node1 keepalived]# scp keepalived.conf notify.sh node2:/etc/keepalived/
在节点2修改复制过来的配置文件只需做如下改动。

[root@node1 keepalived]# service keepalived restart
[root@node2 keepalived]# service keepalived restart

登录网页:

手动切换主节点到另外一个节点上。
[root@node1 keepalived]# touch down

刷新网页:

只要删除/etc/keepalived目录下的down文件主节点还是会切换到节点以1,到此一个结合脚本来提供web服务的高可用功能的服务就完成了


  





运维网声明 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-657687-1-1.html 上篇帖子: keepalived+haproxy 实现对web的动静分离和负载均衡 下篇帖子: haproxy+keepalived高可用负载均衡部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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