首页 > 代码库 > ha + lvs 整和
ha + lvs 整和
环境:关闭火墙
时间同步
yum配置全
HA+lvs ( 高可用+附带均衡 )
VS RS ( rr )
| /
VIP --- HA+IB
| \
VS RS
ip --> 调度器 --> 应用服务
ha( 调度器 ) 192.168.2.77( 主 )
192.168.2.62( 副 )
lvs( 后端应用服务 )192.168.2.53
192.168.2.120
vip( 虚拟ip ) 192.168.2.117
* 1.调度器 ( ha )
(1)安装包 lftp i
get heartbeat-3.0.4-2.el6.x86_64.rpm heartbeat-devel-3.0.4-2.el6.x86_64.rpm heartbeat-libs-3.0.4-2.el6.x86_64.rpm
yum localinstall -y *
(2)脚本( 在这三个目录下写的脚本都可以识别 )
ll -d /etc/init.d/ /etc/ha.d/rc.d/ /etc/ha.d/resource.d/
(3)复制配置模板
cd /usr/share/doc/heartbeat-3.0.4/
cp ha.cf haresources authkeys /etc/ha.d/
(4)修改配置* vim /etc/ha.d/ha.cf
logfile /var/log/ha-log ( 29 ) ( 日志 )
logfacility local0 ( 34 )
keepalive 2 ( 48 ) ( 心跳是2 )
deadtime 30 ( 56 ) ( 停止30s就判断死亡 )
warntime 10 ( 61 ) ( 停止10s就判断警告 )
initdead 60 ( 71 )
udpport 809 ( 76 ) ( 端口 ,测试时和其他的被管理集群端口不一样)
bcast eth0 ( 91 ) ( 广播 )
auto_failback on ( 157 ) ( 做主机 )
watchdog /dev/watchdog ( 207 )
node server77.example.com ( 211 ) ( 主 )( 必需是主机名 )
node server62.example.com ( 212 ) ( 副 )
ping 192.168.2.251 ( 220 ) ( 网关 )
respawn hacluster /usr/lib64/heartbeat/ipfail ( 253 )( 64位 )
apiauth ipfail gid=haclient uid=hacluster ( 259 ) ( 用户身份 )
modprobe softdog
ll /dev/watchdog
crw-rw----. 1 root root 10, 130 Sep 27 11:32 /dev/watchdog
* vim /etc/ha.d/authkeys
auth 1 ( 23 )
1 crc ( 24 )( 最简单的 )
chmod 600 /etc/ha.d/authkeys ( 修改权限 )
* vim /etc/ha.d/haresources
server77.example.com IPaddr::192.168.2.117/24/eth0 httpd ( 150,此处写的ip是主的被管理机,此ip是没有人使用的 )
(5)复制给其他被管理主机
scp /etc/ha.d/haresources /etc/ha.d/authkeys /etc/ha.d/ha.cf 192.168.2.62:/etc/ha.d/
(6)安装http yum install -y httpd
如果先做的lvs需要刷新策略 ipvsadm -C ( ipvsadm -l )
重启网络ip addr show
(7)开启服务 /etc/init.d/heartbeat start
(8)测试 vim /var/www/html/index.html ( server77 )
页面测试:192.168.2.117( server77 )
(9)查看日志 tail -f /var/log/ha-log
(10)查看ip ip addr show
另一个被管理主机
(1)安装http yum install -y httpd
(2)安装包 yum localinstall -y *
(3)开启服务 /etc/init.d/heartbeat start
(1)进行测试 ( 在一个被管理主机上停一个服务,则访问页面到另一个被管理主机的测试页面 )
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
官方网站:http://zh.linuxvirtualserver.org/
2. lvs ( linux 虚拟服务器 )
client --> IB -- web( 多个 ) 当用户访问量很多时需要负载均衡集群( lvs( 数据库 应用层使用 ) nginx ( 网站访问使用 ) haproxy ( 并发量很大 网站访问使用 ))
有三种模式 NAT 隧道 DR
VIP === VIP
DR :client --> VS ( VIP 虚拟ip )--> RS ( no-arp )--> client
m1 m2 m3
m1 --> m2 时 变为m1 --> m3,在 RS 上也有VIP和 VS 上的VIP相同,在同一个网内不可以有相同的ip,所以用 no-arp 设置不让RS上的VIP访问外网
client( mac1 )--> lB( 装换mac地址 mac2--mac3 ) --> rs --> client
lB-- 指的是 ha主机 ( 调度器 )
rs-- 指的是 lvs主机( 附带均衡 )
1.ha( 调度主机 vs)
** 把heartbeat停掉后,1-3操作两台都需要做,但是 4-6操作只需要在一台调度机操作即可
(1)停heartbeat服务 /etc/init.d/heartbeat stop ( 两台调度机都需要停 )
/etc/init.d/heartbeat stop
(2)安装 ipvsadm服务 yum install -y ipvsadm (两台调度机都需要装 )
yum install -y ipvsadm
(3)解析(此步可不做)vim /etc/hosts ( 如果做解析,则都需要做 )
192.168.2.77 server77.example.com
192.168.2.62 server62.example.com
192.168.2.53 server53.example.com
192.168.2.1 server1.example.com
192.168.2.120 server120.example.com
(4)添加虚拟ip ifconfig eth0:0 192.168.2.117 netmask 255.255.255.0 up
ifconfig ( 多了一个vip(虚拟ip))
(5)加载 rule -A( 添加服务 )-t ( tcp ) -s ( 方式 ) rr ( 轮寻 ) -g( 直连 ) -r ( RS--real server )
ipvsadm -A -t 192.168.2.117:80 -s rr
ipvsadm -a -t 192.168.2.117:80 -r 192.168.2.53:80 -g ( lvs主机 53 )
ipvsadm -a -t 192.168.2.117:80 -r 192.168.2.120:80 -g ( lvs主机 120 )
etc/init.d/iptables save ( 保存 )
(6)查看 ipvsadm -l
结果:IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.2.117:http rr
-> server53.example.com:http Route 1 0 0
-> server120.example.com:http Route 1 0 0
( 如果写了解析则是上面的情况是主机名,如果没有写解析则是 ip )
2.lvs ( linux 虚拟服务器 rs)
** 1-8操作,在192.168.2.53和192.168.2.120 都需要操作
(1)安装http yum install -y httpd
(2)测试页面 vim /var/www/html/index.html ( 53主机 内容:53 ) ( 120主机 内容:120 )
(3)绑定vip ifconfig eth0:0 192.168.2.117 netmask 255.255.255.255 up
(4)安装arptables_jf服务
yum install -y arptables_jf
arptables 基本思路和iptables一样,不过,arptables处理arp协议有关的包,这些包在iptables中并不会处理·arptables可用于灵活的arp管理,
如果善于运用的话,不失为一个优秀的arp防火墙.既能防止别的机器对自己进行arp欺骗,又能防止本机病毒或错误程序向其他机器发起arp攻击·
(5)加载规则 -A, --append chain rule-specification追加规则
-L, --list [chain]列出规则
-d, --destination [!] address[/mask]目的地址
-s, --source [!] address[/mask]源地址
-j, --jump target跳到目标
arptables -nL ( 查看 )
arptables -A IN -d 192.168.2.117 -j DROP ( 把输入的VIP关掉 )
arptables -A OUT -s 192.168.2.117 -j mangle --mangle-ip-s 192.168.2.53 ( 120 ) ( 输出时把VIP装换成自己的地址 )
ifconfig ( 查看多了一个vip )
(6)保存规则 /etc/init.d/arptables_jf save
(7)开启http /etc/init.d/httpd start
(8)关火墙 iptables -nL
3.测试( 测试机不可以是ha或者是lvs,必须是他们以外的主机才可以测试 )
(1)网页测试 192.168.2.117 ( 不断刷新页面则会出现 53 120 不断切换的页面 )
(2)在测试主机上 arp -a
结果:? (192.168.2.117) at 52:54:00:44:71:d7 [ether] on br0
( 52:54:00:44:71:d7 )此mac地址是ha( 调度机的mac 不是lvs主机的mac )
在ha( 调度机 ) ifconfig
结果:eth0 Link encap:Ethernet HWaddr 52:54:00:44:71:D7
( HWaddr 52:54:00:44:71:D7 )此mac地址和测试机看到的一样
出现问题:
(1)刷新页面时页面不动( 是直接访问到了lvs主机,没有访问到ha,应该是lvs主机操作出现了问题 )
(2)当访问的mac不是ha的mac时,重新加载后页面没有变化,需要删除原来的mac重新检测即可
arp -d 192.168.1.117( 在测试主机上,删除原来访问的记录 )
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ha和lvs整合
调度器存在单点故障,当调度器坏了,lvs也用不了,所以需要做热备,把ha和lvx整合
/etc/init.d/httpd stop( 192.168.2.53 )( 在lvs上 )
再次访问页面时,会出现错误和120
查看调度列表时两个都在调度( 在ha上 )
检测后端服务的健康状况,维护调度列表
ha( 调度端 )
(1)把ip停了 ipvsadm -C ( 清除调度表 )
ifconfig eth0:0 down
(2)下载包 lftp i( 两个调度都需要安装 )
yum localinstall -y ldirectord-3.9.2-1.2.x86_64.rpm
/etc/init.d/ldirectord status ( 查看是否缺包 )
yum install -y perl-IO-Socket-INET6
(3)复制配置文件
cp /usr/share/doc/packages/ldirectord/ldirectord.cf /etc/ha.d/
复制原因:vim /etc/init.d/ldirectord
(4)修改配置文件
(1) vim /etc/ha.d/ldirectord.cf
Sample for an http virtual service
virtual=192.168.2.117:80 ( 虚拟ip )
real=192.168.2.53:80 gate ( lvs )
real=192.168.2.120:80 gate ( lvs )
fallback=127.0.0.1:80 gate
service=http
scheduler=rr
#persistent=600
#netmask=255.255.255.255
protocol=tcp
checktype=negotiate
checkport=80
request="index.html"
# receive="Test Page"
# virtualhost=www.x.y.z
scp /etc/ha.d/ldirectord.cf 192.168.2.77:/etc/ha.d/
(2)vim /etc/ha.d/haresources
server77.example.com IPaddr::192.168.2.117/24/eth0 httpd ldirectord
scp /etc/ha.d/haresources 192.168.2.77:/etc/ha.d/
(5)开启heartbeat (两个调度都需要开启 )
/etc/init.d/heartbeat start
(6)检测
看日志 tail -f /var/log/messages
调度端口 ipvsadm -l
查看vip在哪调度 ip addr show
当lvs1主机的httpd挂了的时候
/etc/init.d/httpd stop ( 53主机 )
ipvsadm -l
TCP 192.168.2.177:http rr
-> server120.example.com:http Route 1 0 5
http://192.168.2.177
server120
当lvs1主机和lvs2主机都挂了的时候
/etc/init.d/httpd stop ( 53 )
/etc/init.d/httpd stop ( 120 )
ipvsadm -l
TCP 192.168.2.177:http rr
-> localhost:http Local 1 0 0
http://192.168.2.177
server77
ha + lvs 整和