Haporxy小知识

集群分类:

负载均衡集群LB:Nginx,LVS,HAproxy

高可用集群HA:双机热备。keepalived

高性能计算HPC

keeplived

用于实现高可用集群;

工作原理:VRRP(虚拟冗余路由协议)

LVS实现的是负载均衡集群

工作模式:NAT:网络地址转换

           DR:路由模式(peiVIP,改web内核参数)

           TUN:隧道模式

keepalived高可用集群:

在两台web服务器上安装keepalived

修改配置文件(开启行号):vim /etc/keepalived/keepalived.conf

12 router_id web1 # 设置本机在集群中的唯⼀识别符

13 vrrp_iptables # ⾃动配置iptables放⾏规则

... ...

20 vrrp_instance VI_1 {

21 state MASTER # 状态,主为MASTER,备为

BACKUP

22 interface eth0 # ⽹卡

23 virtual_router_id 51 # 虚拟路由器地址

24 priority 100 # 优先级

25 advert_int 1 # 发送⼼跳消息的间隔

26 authentication {

27 auth_type PASS # 认证类型为共享密码

28 auth_pass 1111 # 集群中的机器密码相同,

才能成为集群

29 }

30 virtual_ipaddress {

31 192.168.4.80/24 # VIP地址

32 }

33 }

# 删除下⾯所有⾏

打开⼀个新的终端监控⽇志,新⽇志将出持续显⽰在屏幕上。退出按ctrl+c

[root@web1 ~]# tail -f /var/log/messages | grep -i

keepalived

# 在前⼀个终端启动服务

[root@web1 ~]# systemctl start keepalived

# 等⼏秒服务完全启动后,可以查看到vip

[root@web1 ~]# ip a s eth0 # eth0将会增加额外的4.80地址

配置web2

[root@web1 ~]# scp /etc/keepalived/keepalived.conf

192.168.4.200:/etc/keepalived/

[root@web2 ~]# vim /etc/keepalived/keepalived.conf

12 router_id web2 # 改id

13 vrrp_iptables

... ...

20 vrrp_instance VI_1 {

21 state BACKUP # 改状态

22 interface eth0

23 virtual_router_id 51

24 priority 80 # 改优先级

25 advert_int 1

26 authentication {

27 auth_type PASS

28 auth_pass 1111

29 }

30 virtual_ipaddress {

31 192.168.4.80/24

32 }

33 }

启动服务 [root@web2 ~]# systemctl start keepalived

查看地址,eth0不会出现vip

[root@web2 ~]# ip a s eth0

# 测试,现在访问4.80,看到是web1上的内容

[root@client1 ~]# curl http://192.168.4.80/

192.168.2.100

# 在web2上监控⽇志

[root@web2 ~]# tail -f /var/log/messages | grep -i

keepalived

# 关闭web1上的keepalived,观察web2的⽇志输出

[root@web1 ~]# systemctl stop keepalived.service

# 测试,现在访问4.80,看到是web2上的内容

[root@client1 ~]# curl http://192.168.4.80/

apache web server2

# 在web2上查看vip,可以查看到vip 192.168.4.80

[root@web2 ~]# ip a s eth0

配置高可用的负载均衡的web集群

环境说明:LVS-DR模式

client1:eth0->192.168.4.10

lvs1:eth0->192.168.4.5

lvs2:eth0->192.168.4.6

web1:eth0->192.168.4.100

web2:eth0->192.168.4.200

环境准备:

# 关闭2台web服务器上的keepalived

[root@web1 ~]# systemctl stop keepalived.service

[root@web2 ~]# systemctl stop keepalived.service

[root@web1 ~]# yum remove -y keepalived

[root@web2 ~]# yum remove -y keepalived

# 创建新虚拟机lvs2

[root@zzgrhel8 ~]# clone-vm7

Enter VM number: 5 # 虚拟机编号,

[root@zzgrhel8 ~]# virsh start tedu_node05 # 启动虚机

[root@zzgrhel8 ~]# virsh console tedu_node05 # 连接虚机控制台

localhost login: root

Password: 123456

# 将以下内容粘贴到虚拟机,进⾏初始化

hostnamectl set-hostname lvs2

nmcli connection modify eth0 ipv4.method manual

ipv4.addresses 192.168.4.6/24

nmcli connection down eth0

nmcli connection up eth0

echo a | passwd --stdin root

# 退出

[root@localhost ~]# exit

# 按ctrl + ]退回到真机

# 连接测试

[root@zzgrhel8 ~]# ssh 192.168.4.6

配置⾼可⽤、负载均衡

1. 在2台web服务器的lo上配置vip

2. 在2台web服务器上配置内核参数

3. 删除lvs1上的eth0:0。因为vip将由keepalived接管

[root@lvs1 ~]# ifdown eth0:0

[root@lvs1 ~]# rm -f /etc/sysconfig/network[1]scripts/ifcfg-eth0:0

[root@lvs1 ~]# yum install -y ipvsadm keepalived

[root@lvs2 ~]# yum install -y ipvsadm keepalived

[root@lvs1 ~]# vim /etc/keepalived/keepalived.conf

12 router_id lvs1 # 为本机取⼀个唯⼀的id

13 vrrp_iptables # ⾃动开启iptables放⾏规则

···········‘’‘’‘’‘’

20 vrrp_instance VI_1 {

21 state MASTER

22 interface eth0

23 virtual_router_id 51

24 priority 100

25 advert_int 1

26 authentication {

27 auth_type PASS

28 auth_pass 1111

29 }

30 virtual_ipaddress {

31 192.168.4.15 # vip地址,与web服务器的

vip⼀致

32 }

33 }

# 以下为keepalived配置lvs的规则

35 virtual_server 192.168.4.15 80 { # 声明虚拟服务器地址

36 delay_loop 6 # 健康检查延迟6秒开始

37 lb_algo wrr # 调度算法为wrr

38 lb_kind DR # ⼯作模式为DR

39 persistence_timeout 50 # 50秒内相同客⼾端调度

到相同服务器

40 protocol TCP # 协议是TCP

41

42 real_server 192.168.4.100 80 { # 声明真实服务器

43 weight 1 # 权重

44 TCP_CHECK { # 通过TCP协议对真实服务器做健康检查

45 connect_timeout 3 # 连接超时时间为3秒

46 nb_get_retry 3 # 3次访问失败则认为真

实服务器故障

47 delay_before_retry 3 # 两次检查时间的间隔3秒

48 }

49 }

50 real_server 192.168.4.200 80 {

51 weight 2

52 TCP_CHECK {

53 connect_timeout 3

54 nb_get_retry 3

55 delay_before_retry 3

56 }

57 }

58 }

# 以下部分删除

# 启动keepalived服务

[root@lvs1 ~]# systemctl start keepalived

# 验证

[root@lvs1 ~]# ip a s eth0 # 可以查看到vip

[root@lvs1 ~]# ipvsadm -Ln # 出现规则

# 客⼾端连接测试

[root@client1 ~]# for i in {1..6}; do curl

http://192.168.4.15/; done

apache web server2

apache web server2

apache web server2

apache web server2

apache web server2

apache web server2

# 为了效率相同的客⼾端在50秒内分发给同⼀台服务器。为了

使⽤同⼀个客⼾端可以看到轮询效果,可以注释配置⽂件中相

应的⾏后,重启keepavlied。

# 配置LVS2

[root@lvs1 ~]# scp /etc/keepalived/keepalived.conf

192.168.4.6:/etc/keepalived/

[root@lvs2 ~]# vim /etc/keepalived/keepalived.conf

12 router_id lvs2

21 state BACKUP

24 priority 80

[root@lvs2 ~]# systemctl start keepalived

[root@lvs2 ~]# ipvsadm -Ln # 出现规则

验证:

# 1. 验证真实服务器健康检查

[root@web1 ~]# systemctl stop httpd

[root@lvs1 ~]# ipvsadm -Ln # web1在规则中消失

[root@lvs2 ~]# ipvsadm -Ln

[root@web1 ~]# systemctl start httpd

[root@lvs1 ~]# ipvsadm -Ln # web1重新出现在规则中

[root@lvs2 ~]# ipvsadm -Ln

# 2. 验证lvs的⾼可⽤性

[root@lvs1 ~]# shutdown -h now # 关机

[root@lvs2 ~]# ip a s eth0 # 可以查看到vip

# 客⼾端访问vip依然可⽤

[root@client1 ~]# for i in {1..6}; do curl

http://192.168.4.15/; done

192.168.2.100

apache web server2

apache web server2

192.168.2.100

apache web server2

apache web server2

HAProxy

也是⼀款实现负载均衡的调度器

适⽤于负载特别⼤的web站点

HAProxy的⼯作模式:

mode http:只适⽤于web服务

mode tcp:适⽤于各种服务

mode health:仅做健康检查,很少使⽤

配置haproxy:

# 装包

[root@haproxy1 ~]# yum install -y haproxy

[root@haproxy1 ~]# vim /etc/haproxy/haproxy.cfg

# 配置⽂件中,global是全局配置;default是缺省配置,如果

后续有和default相同的配置,default配置将会被覆盖。

# 配置⽂件中,frontend描述haproxy怎么和⽤⼾交互;

backend描述haproxy怎么和后台应⽤服务器交互。这两个选

项,⼀般不单独使⽤,⽽是合并到⼀起,名为listen。

# 将61⾏之后全部删除,写⼊以下内容

61 listen myweb 0.0.0.0:80 # 定义本机监听地址

62 balance roundrobin # 调度算法为轮询

# 对web服务器做健康检查,2秒检查⼀次,如果连续2次检查

成功,认为服务器是健康的,如果连续5次检查失败,认为服务

器坏了

63 server web1 192.168.4.100 check inter 2000 rise

2 fall 5

64 server web2 192.168.4.200 check inter 2000 rise

2 fall 5

65

66 listen stats 0.0.0.0:1080 # 定义监控地址

67 stats refresh 30s # 设置监控⻚⾯⾃动刷新时

间为30秒

68 stats uri /stats # 定义监控地址是/stats

69 stats auth admin:admin # 监控⻚⾯的⽤⼾名和密

码都是admin

# 启服务

[root@haproxy1 ~]# systemctl start haproxy.service

# 使⽤firefox访问监控地址 http://192.168.4.5:1080/stats

# 客⼾端访问测试

[root@client1 ~]# for i in {1..6}; do curl

http://192.168.4.5/; done

192.168.2.100

apache web server2

192.168.2.100

apache web server2

192.168.2.100

apache web server2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值