以下所有操作都是在Red-hat 6.5上
实验环境:
server1和server4做heartbeat实验。
1.heartbeat
heartbeat是一个开源项目,我们可以通过他的官网下载源代码包编译,这里我们使用rpm包安装了
在server1和server4上安装hreatbeat
安装包:
heartbeat-3.0.4-2.el6.x86_64.rpm heartbeat-libs-3.0.4-2.el6.x86_64.rpm
heartbeat-devel-3.0.4-2.el6.x86_64.rpm ldirectord-3.9.5-3.1.x86_64.rpm
yum install -y heartbeat-*
cd /etc/ha.d/ #进入管理hreatbeat目录
vim README.config #查看hreatbeat配置文件,资源分配文件是什么
rpm -q heartbeat -d #查找配置文件的位置
cd /usr/share/doc/heartbeat-3.0.4/
cp ha.cf authkeys haresources /etc/ha.d/ #制作配置文件
cd -
vim ha.cf #hreatbeat配置文件
34 logfacility local0 #日志类型
48 keepalive 2 #心跳频率
56 deadtime 30 #死亡时间(达到30s没反应就挂掉)
61 warntime 10 #警告时间
71 initdead 60 #初始化时间
76 udpport 69441 #udp端口(每个人的端口要不一样)
91 bcast eth0 # Linux
157 auto_failback on #开启回切
211 node server1 #节点位置(I只能写server1)
212 node server4
220 ping 172.25.41.254 #设置ping的网段
253 respawn hacluster /usr/lib64/heartbeat/ipfail #回切(如果是64位系统就写lib64,如果是32就写32)
259 apiauth ipfail gid=haclient uid=hacluster #给定uid和gid(在安装hraet的时候就给定uid和gid)
vim authkeys(密钥文件)
23 auth 1
24 1 crc
chmod 600 authkeys #密钥文件必须给定600才能使用
vim haresources
150 server1 IPaddr::172.25.41.100/24/eth0 httpd (server1在server4上不用改,在写上http参数后,测试的后,就不能开启httpd)
scp ha.cf authkeys haresources root@172.25.41.4:/etc/ha.d/ #将写好的配置为文件发到server4上
/etc/init.d/heartbeat start #打开hreatbeat
2.lvs负载均衡(轮叫)
刷掉arp缓存命令是 arp -d IP
关闭server1和server4的heartbeats
在server1上 yum install ldirectord -y
cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/
ip addr add 172.25.41.100/32 dev eth0 #在server1,2,3上添加虚拟ip地址
ipvsadm -A -t 172.25.41.100:80 -s rr #添加轮询机制 -A是添加一个虚拟服务,-s是scheduler-method
ipvsadm -a -t 172.25.41.100:80 -r 172.25.41.2:80 -g -a是添加一个服务 -r是真实服务
ipvsadm -a -t 172.25.41.100:80 -r 172.25.41.3:80 -g
/etc/init.d/ipvsadm save #保存策略
在server2和server3上操作:
/etc/init.d/httpd start #打开http服务
yum install arptables_jf -y (server2和server3都安装)
server2
arptables -A IN -d 172.25.41.100 -j DROP #-d 目的地
arptables -A OUT -s 172.25.41.100 -j mangle --mangle-ip-s 172.25.41.2
/etc/init.d/arptables_jf save #保存策略
server3
arptables -A IN -d 172.25.41.100 -j DROP
arptables -A OUT -s 172.25.41.100 -j mangle --mangle-ip-s 172.25.41.3
/etc/init.d/arptables_jf save #保存策略
3.heart+lvs(进行负载均衡,如果server1挂了,server4直接接管,同样进行负载均衡)
刷掉原有ipvsadm的策略
vim /etc/ha.d/ldirectord.cf
25 virtual=172.25.41.100:80
26 real=172.25.41.2:80 gate
27 real=172.25.41.3:80 gate
28 fallback=127.0.0.1:80 gate
29 service=http
30 scheduler=rr
31 #persistent=600
32 #netmask=255.255.255.255
33 protocol=tcp
34 checktype=negotiate
35 checkport=80
36 request="index.html"
37 # receive="Test Page"
38 # virtualhost=www.x.y.z
vim /etc/ha.d/haresources
150 server1 IPaddr::172.25.41.100/24/eth0 httpd ldirectord #添加ldirectord
在server1上和server4上同时打开heartbeats服务 心跳功能开启
一个机子上开启http和ldirectord,另外一个不开启任何一个服务,但当第一个机子挂了之后,第二台会直接接管
4.keepalived
keepalived:也是高可用的服务,分为一个master和backup,当master挂掉后,直接去backup去搞。
关掉server1和server4的心跳服务,关闭httpd ldirectord
tar zxf keepalived-1.2.8.tar.gz #解压
cd keepalived-1.2.8
./configure --prefix=/usr/local/keepalived #在编译的时候,要解决依赖源的问题,根据后面的提示,直接yum安转软件就好。
make && make insatall #安装
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/etc/keepalived/ /etc/
chmod +x /etc/init.d/keepalived
在安装好keepalived的时候,不用在server4上编译安装,直接将server1上装好的,scp过去
scp -r /usr/local/keepalived/ root@172.25.77.4:/usr/local/
做软连接(server1和server4)
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/etc/keepalived/ /etc/ 做配置文件
vim /etc/keepalived/keepalived.conf
1 ! Configuration File for keepalived
2
3 global_defs {
4 notification_email {
5 root@localhost #接收警报的 email 地址,可以添加多个
6 }
7
8 notification_email_from keepalived@server1
9 smtp_server 127.0.0.1 #使用本机转发 email
10 smtp_connect_timeout 30
11 router_id LVS_DEVEL #load balancer 的标识 ID,用于 email 警报
12 }
13
14 vrrp_instance VI_1 {
15 state MASTER #备机改为 BACKUP,此状态是由 priority 的值来决定的,当前 priority的值小于备机的值,那么将会失去 MASTER 状
16 interface eth0 #HA 监测网络接口
17 virtual_router_id 77 #主、备机的 virtual_router_id 必须相同(不要跟别人的重复,用自己ip数)
18 priority 100 #主机的优先级,备份机改为 50
19 advert_int 1 #主备之间的通告间隔秒数
20 authentication { #主备切换时的验证
21 auth_type PASS
22 auth_pass 1111
23 }
24 virtual_ipaddress { #HA 虚拟 ip,可加多个
25 172.25.77.100
26 }
27 }
28
29 virtual_server 172.25.77.100 80 {
30 delay_loop 6 #每隔 6 秒查询 realserver状态
31 lb_algo rr #lvs 调度算法,这里使用轮叫
32 lb_kind DR #lvs 负载均衡机制,这里使用直连路由
33 #nat_mask 255.255.255.0 #1.2.8版本上这个行必须注释
34 #persistence_timeout 50 #同一 IP 的连接 60 秒内被分配到同一台 realserver
35 protocol TCP #用 TCP 协议检查 realserver 状态
36
37 real_server 172.25.77.2 80 {
38 weight 1
39 TCP_CHECK {
40 connect_timeout 3
41 nb_get_retry 3 #故障重试秒数
42 delay_before_retry 3 #重试延迟
43 }
44 }
45 real_server 172.25.77.3 80 {
46 weight 1
47 TCP_CHECK {
48 connect_timeout 3
49 nb_get_retry 3
50 delay_before_retry 3
51 }
52
53 }
54
55 }
将配置文件scp到server4上,修改上面提到的几行信息,做backup
将server1和server4开启keepalived服务。
测试:
输入172.25.77.100