Heartbeat+DRDB+LVS+Keepalived+Ldirectord
来源:互联网 发布:网页美工的工作内容 编辑:程序博客网 时间:2024/05/16 11:28
Part 1
Heartbeat+DRDB
1.Heartbeat安装与配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
rpm -ivh 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
ldirectord-3.9.5-3.1.x86_64.rpm
yum
install
-y *
##安装缺少的软件包,解决依赖性.
cd
/usr/share/doc/heartbeat-3
.0.4/
##进入heartbeat-3.0.4的相关配置文件目录下
cp
-r ha.cf haresources authkeys
/etc/ha
.d/
vim
/etc/ha
.d
/ha
.cf
##主配置文件
keepalive 2
##心跳频率2秒一次
deadtime 30
##节点死亡时间阀值,就是从节点在过了 30 后还没有收到心跳就认为主节点死亡
warntime 10
##发出警告时间为10S
initdead 60
##守护进程首次启动后等待60秒后再启动主服务器上的资源
udpport 738
##心跳信息传递的UDP端口,使用端口738进行bcast和ucast 通信
bcast eth0
##采用udp广播播来通知心跳
auto_failback on
##当主节点恢复后,是否自动切回
node server2.example.com
##主节点名称,排在第一的默认为主节点
node server3.example.com
##副节点名称
ping
172.25.44.251
respawn hacluster
/usr/lib64/heartbeat/ipfail
##默认Heartbeat不检测除本身之外的其他任何服务,也不检测网络状况。所以当网络中断时,并不会进行 Load Balancer 和 Backup 之间的切换。
apiauth ipfail gid=haclient uid=hacluster
##可以通过ipfail插件,设置'ping nodes'来解决这一问题。
vim
/etc/ha
.d
/haresources
##资源配置文件
server2.example.com IPaddr::172.25.44.144
/24/eth0
mysqld
##主节点 虚拟IP 所启用服务的脚本名称
vim
/etc/ha
.d
/authkeys
##认证文件
auth 1
1 crc
##采用第一种:明文加密方式
chmod
600
/etc/ha
.d
/authkeys
##将认证文件的权限改成600,仅超级用户可读可写
/etc/init
.d
/heartbeat
start
##首先打开主节点的Heartbeat
tail
-f
/var/log/messages
##查看日志
2.利用Heartbeat实现节点与M端的磁盘共享:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
yum
install
-y scsi-target-utils.x86_64 0:1.0.24-10.el6
vim
/etc/tgt/targets
.conf
<target iqn.2016-06.com.example:server.disk>
backing-store
/dev/vdb
initiator-address 172.25.35.4
initiator-address 172.25.35.5
<
/target
>
/etc/init
.d
/tgtd
start
##启动Tgt
在节点主机上:
yum
install
-y iscsi-initiator-utils-6.2.0.873-10.el6.x86_64
scsiadm -t st -m discovery -p 172.25.35.6
##查找iSCSI服务器所提供的iSCSI目标
iscsiadm -m node -l
##登录服务器上的iscsi目标
在一台节点主机server2上:
fdisk
-cu
/dev/sda
##把4G磁盘做成一个分区
n
p
1
w
partprobe
##同步分区表
cat
/proc/partitions
##查看分区表信息
mkfs.ext4
/dev/sda1
##格式化成ext4文件系统
vim
/etc/ha
.d
/haresources
server2.example.com IPaddr::172.25.44.144
/24/eth0
Filesystem::
/dev/sda1
::
/var/lib/mysql
::ext4 mysqld
/etc/init
.d
/heartbeat
restart
##在主节点上重启Heartbeat
tail
-f
/var/log/messages
##查看日志
3.DRBD编译
1
2
3
4
5
6
7
8
9
10
11
12
tar
zxf drbd-8.4.3.
tar
.gz
yum
install
-y gcc flex rpm-build kernel-devel
##解决软件依赖性
cp
drbd-8.4.3.
tar
.gz rpmbuild
/SOURCES/
##把drbd的包拷贝到rpmbuild编译所需的路径下
rpmbuild -bb drbd.spec
##编译生成二进制drbd rpm包
rpmbuild -bb drbd-km.spec
##编译drbd内核模块
cd
drbd-8.4.3/
.
/configure
--
enable
-spec --with-km
cd
rpmbuild
/RPMS/x86_64/
rpm -ivh *
把生成的rpm包拷贝到另一台节点主机上,并安装软件包:
scp
* 172.25.44.33:
rpm -ivh drbd-*
4.配置DRBD,并实现远程数据同步
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
vim
/etc/drbd
.d
/example
.res
resource sqldata {
meta-disk internal;
device
/dev/drbd1
;
syncer {
verify-alg sha1;
}
on server2.example.com {
disk
/dev/vdb
;
address 172.25.44.22:7789;
}
on server3.example.com {
disk
/dev/vdb
;
address 172.25.44.33:7789;
}
}
1
2
3
4
5
scp
/etc/hrbd
.d
/example
.res 172.25.44.33:
/etc/hrbd
.d/
drbdadm create-md sqldata
##在两台节点主机上分别执行初始化
/etc/init
.d
/drbd
start
##并分别开启DRBD
drbdsetup primary sqldata --force
##把sqldata强制设置成primary节点,并同步数据
watch
cat
/proc/drbd
##在两台节点主机上分别查看同步状态
1
2
3
4
5
6
7
8
9
mkfs.ext4
/dev/drbd1
##数据同步后,将其格式化为ext4文件系统
mount
/dev/drbd1
/mnt/
##挂载文件系统
cp
-rp
/var/lib/mysql/
*
/mnt/
##存放数据
umount
/dev/drbd1
##卸载文件系统
drbdadm secondary sqldata
##将server2设置secondary节点
在副节点server3上:
drbdadm primary sqldata
##将server3设置primary节点
mount
/dev/drbd1
/mnt/
##挂载文件系统
df
##查看挂载信息
5.整合Heartbeat与DRBD
1
2
3
4
5
6
7
8
9
10
11
drbdadm secondary sqldata
在主节点上:
vim
/etc/ha
.d
/haresources
server2.example.com IPaddr::172.25.44.144
/24/eth0
drbddisk::sqldata
Filesystem::
/dev/drbd1
::
/var/lib/mysql
::ext4 mysqld
把编辑好的文件拷贝给副节点:
scp
/etc/ha
.d
/haresources
172.25.44.33:
/etc/ha
.d/
在两台节点主机上:
/etc/init
.d
/mysqld
start
/etc/init
.d
/heartbeat
start
##先开主节点再开副节点
tail
-f
/var/log/messages
##查看运行日志
1
2
3
df
##查看挂载信息
ip addr show
##查看虚拟IP
如图:
Part 2
LVS+Heartbeat+Keepalived+Ldirectord
1.Linux虚拟服务器(LVS)简介
2. 配置VS端与RS端
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ip addr add 172.25.44.144
/24
dev eth0
##在eth0上添加VIP(虚拟网络地址)
ipvsadm -l
##显示VS端主机列表
ipvsadm -C
##清除所有列表
ipvsadm -A -t 172.25.44.144:80 -s rr
##给指定的VIP添加轮叫调度算法
ipvsadm -a -t 172.25.44.144:80 -r 172.25.44.44:80 -g
##给VIP添加真实服务器RS的IP,使用默认网关
ipvsadm -a -t 172.25.44.144:80 -r 172.25.44.44:80 -g
在RS端(server4,server5上作相同操作):
ip addr add 172.25.44.144
/32
dev eth0
##在eth0上添加VIP(虚拟网络地址)
vim
/var/www/html/index
.html
##在Apache的默认发布目录下写入测试页
server4.example.com
##在server5上作同样操作
yum
install
-y arptables_jf
##通过使用arptables_jf来直接路由,不对外响应
arptables -A IN -d 172.25.44.144 -j DROP
arptables -A OUT -d 172.25.44.144 -j mangle --mangle-ip-s 172.25.44.55
##为每台真实服务器(server4,server5)的虚拟IP创建ARP列表,导致真实服务器忽略所有针对于虚拟IP的ARP请求,并且不对外响应,把原来含有虚拟IP的ARP回应改成真实服务器的IP。对VIP回应的节点变成启用中的LVS节点。
/etc/init
.d
/arptables_jf
save
##存储ARP表格项目
/etc/init
.d
/arptables_jf
start
##启动arptables_jf
/etc/init
.d
/httpd
start
##启动Apache
3.用Ldirectord来实现健康检查功能
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
cp
/usr/share/doc/ldirectord-3
.9.5
/ldirectord
.cf
/etc/ha
.d/
vim
/etc/ha
.d
/ldirectord
.cf
# Sample for an http virtual service
virtual=172.25.44.144:80
##虚拟IP
real=172.25.44.44:80 gate
real=172.25.44.55:80 gate
fallback=127.0.0.1:80 gate
##RS全部发生故障切换回本机
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
vim
/var/www/html/index
.html
##在Apache的默认发布目录下写入测试页
server2.example.com
4.整合Heartbeat和Ldirectord,实现调度器的高可用性
1
2
3
4
5
6
7
在主节点server2上:
vim
/etc/ha
.d
/haresources
server2.example.com IPaddr::172.25.44.144
/24/eth0
httpd ldirectord
scp
/etc/ha
.d
/haresources
/etc/ha
.d
/ldirectord
.cf 172.25.44.33:
/etc/ha
.d/
##将修改过的配置文件拷贝给副节点
/etc/init
.d
/heartbeat
stop
/etc/init
.d
/ldirectord
start
/etc/init
.d
/httpd
start
5.Keepalived编译
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
tar
zxf keepalived-1.2.20.
tar
.gz
rpm -ivh libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm
yum
install
ipvsadm kernel-devel openssl-devel popt-devel libnl-devel gcc net-snmp-devel -y
##安装软件,解决依赖性
cd
keepalived-1.2.20/
.
/configure
--prefix=
/usr/local/keepalived
make
&&
make
install
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/
ln
-s
/usr/local/keepalived/sbin/keepalived
/sbin/
ln
-s
/usr/local/keepalive/bin/genhash
/bin/
vim
/etc/keepalived/keepalived
.conf
! Configuration File
for
keepalived
global_defs {
notification_email {
root@localhost
##接收警报的email地址
}
notification_email_from Keepalived@server2.example.com
###设置邮件的发送地址
smtp_server 127.0.0.1
##设置smtp server地址
smtp_connect_timeout 30
##设置连接smtp服务器超时时间
router_id LVS_DEVEL
##load balancer的标识ID,用于email警报
vrrp_skip_check_adv_addr
vrrp_strict
}
vrrp_instance VI_1 {
state MASTER
##备机改为 BACKUP,此状态是由priority的值来决定的,当前
priority的值小于备机的值,那么将会失去MASTER状态
interface eth0
##HA 监测网络接口
virtual_router_id 51
##主、备机的virtual_router_id必须相同,取值0-255
priority 100
##主机的优先级,备份机改为 50,主机优先级一定要大于备机
advert_int 1
##主备之间的通告间隔秒数
authentication {
auth_type PASS
##设置验证类型,主要有 PASS 和 AH 两种
auth_pass 1111
##设置验证密码,在一个 vrrp_instance下,MASTER 与 BACKUP必须使用相同的密码才能正常通信
}
virtual_ipaddress {
##设置虚拟 IP 地址
172.25.44.144
}
}
virtual_server 172.25.44.22 80 {
##定义虚拟服务器
delay_loop 6
##每隔 6 秒查询 realserver 状态
lb_algo rr
##轮叫调度算法
lb_kind DR
##LVS是用DR模式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# persistence_timeout 50 ##会话保持时间,单位是秒,这个选项对于动态网页是非常有用的,为集群系统中 session 共享提供了一个很好的解决方案。有了这个会话保持功能,用户的
请求会被一直分发到某个服务节点,直到超过这个会话保持时间。需要注意的是,这个会话保
持时间,是最大无响应超时时间,也就是说用户在操作动态页面时,如果在 50 秒内没有执行任何操作,那么接下来的操作会被分发到另外节点,但是如果一直在操作动态页面,则不受 50 秒的时间限制。
protocol TCP
real_server 172.25.44.44 80 {
##配置服务节点
weight 1配置服务节点的权值,权值大小用数字表示,数字越大,权值越高,设置权值的大小可以为不同性能的服务器分配不同的负载,可以对性能高的服务器设置较高的权值,而对性能较低的服务器设置相对较低的权值,这样就合理的利用和分配了系统资源。
TCP_CHECK {
##realserve的状态检测设置部分,单位是秒
connect_timeout 3
##3秒无响应超时
nb_get_retry 3
##重试次数
delay_before_retry 3
##重试间隔
}
}
real_server 172.25.44.55 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
scp
/etc/keepalived/keepalived
.conf root@172.25.44.33:
/etc/keepalived/
/etc/init
.d
/keepalived
start
##依次启动主,备机的keepalived
0 0
- Heartbeat+DRDB+LVS+Keepalived+Ldirectord
- Heartbeat,LVS ,Keepalived,Ldirectord功能及配置
- heartbeat+ldirectord+lvs nat
- heartbeat+LVS+ldirectord
- Heartbeat+lvs+ldirectord
- Lvs+Ldirectord+Heartbeat
- Lvs+Ldirectord+Heartbeat
- HA + LVS + ipvsadm + heartbeat-ldirectord
- heartbeat+lvs和keepalived
- 运维笔记30 (lvs负载均衡的(nat,tun,dr三种模式,ldirectord健康检测,ldirectord结合heartbeat)keepalived+lvs介绍)
- centos 5.2 lvs+heartbeat+ldirectord集群
- lvs+heartbeat+ldirectord(centos5 测试通过)
- Centos5.5下lvs+heartbeat+ldirectord
- Heartbeat+ipvsadm+ldirectord高可用双机lvs
- lvs+keepalived和haproxy+heartbeat keepalived heartbeat
- heartbeat+drdb
- lvs+keepalived 和 haproxy+heartbeat
- Heartbeat + LVS + ldirectord构建可伸缩网络服务(1)
- java原始webservice生成客户端
- A Deeper Look at Saliency: Feature Contrast, Semantics, and Beyond
- css2-overflow 属性
- OCR技术使书籍报刊电子化
- 排序算法之直接插入排序-Java-version
- Heartbeat+DRDB+LVS+Keepalived+Ldirectord
- Android错误处理——Android读取txt文件乱码解决方案
- java后台保存base64图片数据
- 认识CoreData—基础使用
- poj 2151 Check the difficulty of problems
- window 内核驱动开发环境配置
- Pku oj 3311 Hie with the Pie(TSP问题)
- 什么影响了mysql的性能?
- 安卓自定义View进阶-Matrix原理