在172.16.28.130 和172.16.28.131 上安装ipvs和keepalived:
- # 安装ipvs
- sudo yum install ipvsadm
- # 安装keepalived
- sudo yum install keepalived
在172.16.28.132 和172.16.28.133 上安装nginx:
- # 安装nginx
- sudo yum install nginx
需要注意的是,在两台nginx服务器上需要将防火墙关闭,否则lvs+keepalived的两台机器就无法将请求发送到两台nginx服务器上来:
- # 关闭防火墙
- systemctl disable firewalld.service
查看两台负载均衡机器是否支持lvs:
- sudo lsmod |grep ip_vs
- # 如果看到如下结果,则说明是支持的
- [zhangxufeng@localhost ~]$ sudo lsmod|grep ip_vs
- ip_vs 145497 0
- nf_conntrack 137239 1 ip_vs
- libcrc32c 12644 3 xfs,ip_vs,nf_conntrack
如果上述命令没有任何结果,则执行sudo ipvsadm 命令启动ipvs之后,再通过上述命令进行查看即可。启动ipvs之后,我们就可以在/etc/keepalived/ 目录下编辑keepalived.conf 文件,我们以172.16.28.130 机器作为master机器,master节点配置如下:
- # Global Configuration
- global_defs {
- lvs_id director1 # 指定lvs的id
- }
- # VRRP Configuration
- vrrp_instance LVS {
- state MASTER # 指定当前节点为master节点
- interface ens33 # 这里的ens33是网卡的名称,通过ifconfig或者ip addr可以查看
- virtual_router_id 51 # 这里指定的是虚拟路由id,master节点和backup节点需要指定一样的
- priority 151 # 指定了当前节点的优先级,数值越大优先级越高,master节点要高于backup节点
- advert_int 1 # 指定发送VRRP通告的间隔,单位是秒
- authentication {
- auth_type PASS # 鉴权,默认通过
- auth_pass 123456 # 鉴权访问密码
- }
- virtual_ipaddress {
- 172.16.28.120 # 指定了虚拟ip
- }
- }
- # Virtual Server Configuration - for www server
- # 后台真实主机的配置
- virtual_server 172.16.28.120 80 {
- delay_loop 1 # 健康检查的时间间隔
- lb_algo rr # 负载均衡策略,这里是轮询
- lb_kind DR # 调度器类型,这里是DR
- persistence_time 1 # 指定了持续将请求打到同一台真实主机的时间长度
- protocol TCP # 指定了访问后台真实主机的协议类型
- # Real Server 1 configuration
- # 指定了真实主机1的ip和端口
- real_server 172.16.28.132 80 {
- weight 1 # 指定了当前主机的权重
- TCP_CHECK {
- connection_timeout 10 # 指定了进行心跳检查的超时时间
- nb_get_retry 3 # 指定了心跳超时之后的重复次数
- delay_before_retry 3 # 指定了在尝试之前延迟多长时间
- }
- }
- # Real Server 2 Configuration
- real_server 172.16.28.133 80 {
- weight 1 # 指定了当前主机的权重
- TCP_CHECK {
- connection_timeout 10 # 指定了进行心跳检查的超时时间
- nb_get_retry 3 # 指定了心跳超时之后的重复次数
- delay_before_retry 3 # 指定了在尝试之前延迟多长时间
- }
- }
- }
上面是master节点上keepalived的配置,对于backup节点,其配置与master几乎是一致的,只是其state和priority参数不同。如下是backup节点的完整配置:
- # Global Configuration
- global_defs {
- lvs_id director2 # 指定lvs的id
- }
- # VRRP Configuration
- vrrp_instance LVS {
- state BACKUP # 指定当前节点为master节点
- interface ens33 # 这里的ens33是网卡的名称,通过ifconfig或者ip addr可以查看
- virtual_router_id 51 # 这里指定的是虚拟路由id,master节点和backup节点需要指定一样的
- priority 150 # 指定了当前节点的优先级,数值越大优先级越高,master节点要高于backup节点
- advert_int 1 # 指定发送VRRP通告的间隔,单位是秒
- authentication {
- auth_type PASS # 鉴权,默认通过
- auth_pass 123456 # 鉴权访问密码
- }
- virtual_ipaddress {
- 172.16.28.120 # 指定了虚拟ip
- }
- }
- # Virtual Server Configuration - for www server
- # 后台真实主机的配置
- virtual_server 172.16.28.120 80 {
- delay_loop 1 # 健康检查的时间间隔
- lb_algo rr # 负载均衡策略,这里是轮询
- lb_kind DR # 调度器类型,这里是DR
- persistence_time 1 # 指定了持续将请求打到同一台真实主机的时间长度
- protocol TCP # 指定了访问后台真实主机的协议类型
- # Real Server 1 configuration
- # 指定了真实主机1的ip和端口
- real_server 172.16.28.132 80 {
- weight 1 # 指定了当前主机的权重
- TCP_CHECK {
- connection_timeout 10 # 指定了进行心跳检查的超时时间
- nb_get_retry 3 # 指定了心跳超时之后的重复次数
- delay_before_retry 3 # 指定了在尝试之前延迟多长时间
- }
- }
- # Real Server 2 Configuration
- real_server 172.16.28.133 80 {
- weight 1 # 指定了当前主机的权重
- TCP_CHECK {
- connection_timeout 10 # 指定了进行心跳检查的超时时间
- nb_get_retry 3 # 指定了心跳超时之后的重复次数
- delay_before_retry 3 # 指定了在尝试之前延迟多长时间
- }
- }
- }
将master和backup配置成完全一样的原因是,在master宕机时,可以根据backup的配置进行服务的无缝切换。 (编辑:南平站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|