Keepalive 运行原理
Keepalived 检测每个服务节点状态
当服务器节点异常或工作出现故障, keepalived 将故障节点从集群从集群系统中踢除
故障节点恢复后, 自动将其加入
使用 keepalived 软件配置 HA 集群
使用 keepalived 软件配置 HA 集群
1. 提供服务的主机需要装 keepalived 和 web 服务
yum -y install httpd keepalived
2. 修改提供服务的主机的 keepalived 的配置文件 /
35 行以后是做调度器的高可用配置
规划主, 备服务器, 设置 VIP(公网 IP)
这里的主备是抢占式的
- global_defs {
- notification_email {
- acassen@firewall.com // 设置报警收件人邮箱
- }
- notification_email_from link@firewall.com // 发件人邮箱
- smtp_server 192.168.200.1 // 邮件服务器地址
- smtp_connect_timeout 30 // 邮件超时时间
- router_id LVS_DEVEL // 设置路由 ID
- #vrrp_strict // 这条需要注释掉, 不然下面的 VIP 就会不通
- }
- vrrp_instance webha { //webha 集群名称
- state MASTER // 描述名,
- interface eth0 // 与集群内服务主机之间通信使用网卡
- virtual_router_id 51
- priority 100 // 优先级, 数值越高, 越优先, 主的优先级高, 默认 100
优先级最大 255, 超过失效
- advert_int 1 // 集群内服务主机之间的通信时间间隔, 单位秒
- authentication {
- auth_type PASS // 认证类型
- auth_pass 1111 // 使用密码
- }
- virtual_ipaddress { // 设置 VIP 地址
- 192.168.200.16
- }
- }
当 Web 服务 down 了, 高可用集群的调度主备不会浮动 VIP
- VIM /root/check_80.sh
- #!/bin/bash
- netstat -ntulp | grep 80
- if [ $? -ne 0 ];then
- systemctl stop keepaloved.service
- if
综合应用: keepalived+LVS 配置 LVS 调度器 HA 集群
需求: 把主机 A 配置为主 LVS 调度器, B 主机为备用的 LVS 调度器, 当分发器 A 宕机了, B 主机立即启用
1.A,B 上安装 keepalived 软件, ipvsadm 软件
Yum -y install keepalived ipvsadm
2. 修改 / etc/keepalived/keepalived.conf
修改优先级划分主备 (AB) 服务主机
修改认证的密码 主备 (AB) 服务器的密码必须一致
修改 IPV(virtual_ipaddress)为 192.168.4.253
以下配置 A,B 一致
- virtual_server 192.168.4.253 80 { // 定义虚拟调度机
- delay_loop 6
- lb_algo rr // 调度算法
- lb_kind DR // 工作模式, 与后台 realserver 的工作模式一致
- persistence_timeout 50
- protocol TCP
- connect_timeout 3
- nb_get_retry 3
- delay_before_retry 3
- real_server 192.168.4.52 80 { // 后台提供 Web 服务的主机
- weight 1
- }
- }
这个步骤是将 A,B 设为为 keepalived 主备机, 并且加上 LVS(ipvsadm), 实现高可用 (HA) 和
负载均衡 (LB) 的综合应用
3. 在 A,B 上启动并设置开机自启(keepalived)
- systemctl restart keepalived.service
- systemctl enable keepalived.service
4. 在客户机上进行测试,
curl http://192.168.4.253
前提: 后台提供 Web 服务的机器必须正常运行
- echo 1> /proc/sys.NET/ipv4/conf/lo/arp_ignore
- echo 2> /proc/sys.NET/ipv4/conf/lo/arp_announce
- echo 1> /proc/sys.NET/ipv4/conf/all/arp_ignore
- echo 2> /proc/sys.NET/ipv4/conf/all/arp_announce
- ifconfig lo:1 192.168.4.253/32
扩展: 以上配置做完之后, keepalived 不会对后端的 httpd 服务做健康检查,, 如果需要, 必须进行 tcp 连接检查
- real_server 192.168.4.52 80 {
- weight 1
- TCP_CHECK {
- connect_timeout 3
- nb_get_retry 3
- delay_before_retry 3
- }
- }
使用 Haproxy 软件配置 LB 集群
工作模式 1.mode http
- 2.mode tcp
- 3.mode htalth
- Mode http
- 1.http close
每次响应请求后立即断开连接
2.keep-alive
每一连接可以发起多个请求, 但是多个请求需要服务器按顺序一个一个响应不能一次性作出响应
3.pipelining
一次连接可以发起多次请求, 这些请求服务器并行进行响应, 同时处理请求, 减少了延迟, 但是
对服务器的要求比较高,
配置:
1. 装包
Yum -y install haproxy
2. 配置文件及介绍
VIM /etc/haproxy/haproxy.cfg
default: 为后续的其他部分设置默认参数, 缺省参数可以被后续部分覆盖
frontend: 描述接收客户端侦听套接紫集
backend: 描述转发连接的服务器集
listen: 把 frontend 和 backend 结合到一起的完整声明
- // 这里为 / etc/haproxy/haproxy.cfg 的配置
- default
- stats uri /admin #以友好的页面展示 LB 集群实际状况
- listen webla 192.168.4.56:80
- cookie SERVERID rewrite
- balance roundrobin
- server weba 192.168.4.55:80 cookie app1inst1 check inter 2000 rise 2 fall 5
- server webb 192.168.4.57:80 cookie app2inst2 check inter 2000 rise 2 fall 5
3. 启动服务及查看状态
- Systemctl restart haproxy
- Systemctl status haproxy
4. 有好页面的访问
http://192.168.4.56/admin
来源: http://www.bubuko.com/infodetail-2802505.html