Lvs(负载均衡):
一台主负载a,备机负载b,备机负载c......,当a负载超出限制时,就会将业务分发至bc,从而保证效率和可用性。
安装开源软件:
以下软件的安装通过编写脚本build.sh来实现。
Arping:是一个 ARP 级别的 ping 工具,可用来直接 ping MAC 地址,以及找出那些 ip 地址被哪些电脑所使用了。
libnet:libnet提供的函数接口主要实现和封装了数据包的构造和发送过程。
libpcap:libpcap提供的函数接口主要实现和封装了与数据包截取有关的过程。
openssl:openssl是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSl协议,并提供丰富的应用程序供程序测试和其他目的使用。
keepalived(主要 可实现热备服务和负载均衡):keepalived的作用是检测服务器的状态,如果拥有一台web服务器宕机,或者出现故障,keepalived将检测到,并将有故障的服务器从系统中提出,同时使用其他服务器代替该服务器工作,当服务器正常后keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障服务器。原理:检查服务群的iP和端口是否联通,若不连通则报告并替换,还有就是根据用户的一些设定来鉴别服务群中的机器是否出现问题。
touch lvstest.conf
global_defs {
router_id TEST_LVS
}
vrrp_instance VI_1 {
state MASTER
interface eth2 #绑定的网口
virtual_router_id 51
priority 100 #权重,主负载要比备机负载高一些
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
1.1.1.1 #主负载的IP
}
}
virtual_server 1.1.1.1 80 { #主负载的IP和端口
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 3
protocol TCP
real_server 11.11.0.11 80 { #备机负载的IP和端口
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 11.11.0.12 80 { #备机负载的IP和端口
weight 3 #权重
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80 #端口
}
}
}
global_defs {
router_id TEST_LVS
}
vrrp_instance VI_1 {
state BACKUP
interface eth2 #绑定的网口
virtual_router_id 51
priority 98 #优先级,备机负载要比主机负载低
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
1.1.1.1 #主负载IP
}
}
virtual_server 1.1.1.1 80 { #主负载的IP和端口
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 3
protocol TCP
real_server 11.11.0.11 80 { #备机负载的IP和端口
weight 3 #权重
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 11.11.0.12 80 { #备机负载的IP和端口
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80 #端口
}
}
}
开启主负载:
例如配置文件lvstest.conf的路径是/home/conf/lvstest.conf,执行文件keepalived的路径是/home/bin/keepalived,执行以下:
/home/bin/keepalived -f /home/conf/lvstest.conf
rm -fR /var/lock/keepalived-b
touch /var/lock/keepalived-m
开启备机负载:
例如配置文件lvstest.conf的路径是/home/conf/lvstest.conf,执行文件keepalived的路径是/home/bin/keepalived,执行以下:
/home/bin/keepalived -f /home/conf/lvstest.conf
rm -fR /var/lock/keepalived-m
touch /var/lock/keepalived-b
关闭服务:
1,获取/var/run/keepalived.pid中记录的pid
2,kill -9 pid
3,删除/var/run/keepalived.pid文件
4,删除/var/lock/keepalived-m或者/var/lock/keepalived-b文件
int lb_status()
{
if(!lb_ifreal())
return 0; //if lvs real server running,return 0
if(!access("/var/lock/keepalived-m",0))
printf("lvs MASTER server is running!\n");
else if(!access("/var/lock/keepalived-b",0))
printf("lvs BACKUP server is running!\n");
else
printf("lvs server is not running\n");
return 0;
}
lvs的日志文件默认写在/var/log/message中,我们可以直接打开来看。
然而我们所写的执行脚本所生成的日志,一般不是它们执行内部产生的一些细节上的日志记录,而是一些启动信息,状态信息等等,
因此我们将它写到一个其他目录下的一个日志文件。以便于区分。
转载一篇文章:
##################################################################
##################################################################
-----------------------------------------------------------------------------------------------------
具体配置参考官方资料
-
GLOBAL CONFIGURATION
可以只保留一个 route_id,对于主备方式,该 route_id 可以相同,也可以不同
-
VRRPD CONFIGURATION
- state,主机配置为 MASTER,备机配置为 BACKUP
- virtual_router_id,主备必须相同,主备争抢 VIP 时,会使用该参数来标识主备需要占用同一个 VIP
- priority,优先级,主备机争抢 VIP 时会以该参数作为协商基准,数字越大优先级越高,优先级高的一方会抢到 VIP。一般配置为 MASTER 大于 BACKUP,这样 MASTER 宕掉,VIP 会切换到 BACKUP 上,MASTER 重新启动后,VIP 又会回切到 MASTER。如果 BACKUP 配置得比 MASTER 大,BACKUP 启动后会一直占用 VIP。配置成相同的时候,测试结果为 MASTER 重启后,会切换到 MASTER 上,然后 MASTER 争抢 VIP 失败,又会回到 BACKUP 上,所以不能将 priority 配成相同。
- nopreempt,表示如果 keepalived 重新启动后,虚拟 IP 不回切
- advert_int,相当于主备机心跳时长,单位为秒,一般配置为 1,如果配置得过大会导致 VIP 切换时间变长。测试情况:设置为 1 时,发生切换时,ping 包丢失 1-2 个,设置为 5 时,ping 包丢失 5-6 个
- virtual_ipaddress,注意必须配置为 VIP
-
LVS CONFIGURATION
- delay_loop:Checker 链路检测时间间隔
- lb_algo:轮徇策略,一般常用 rr(轮徇),wrr(按权重轮徇),lc(最小连接数),wlc(按权重最小连接数)
- lb_kind:LVS 模式,DR,NAT 和 TUN,配置成 DR 时,不要使用 lc 或 wlc,因为 DR 使用的是虚拟 IP 的方式,在负载均衡上没有连接状态,会导致所有请求都送到一台 Real Server 上。使用 NAT 时,需要添加 persistence_timeout,会话保持时长,以保证响应能回到正确的请求上。
- real_server:配置相应 Real Server 的权重和链路检测参数
以上,如果需要添加一台 Real Server,在 virtual_server 配置块下增加一个 real_server 块
如果需要增加一个 Virtual Server,增加一个 virtual_server 块。
Real Server 配置
Real Server 关闭 ARP 广播响应
- 1
- 2
- 3
- 4
- 5
Real Server 恢复 ARP 广播响应
- 1
- 2
- 3
- 4
- 5
以上设置用于关闭 loopback 接口和其它所有网络接口的 ARP 广播响应,避免 Real Server 抢占 Virtual Server 的 VIP
##################################################################
##################################################################
完!