Keepalived简单配置

Keepalived服务的三个重要功能
  1. 管理LVS负载均衡
  2. 对LVS节点做健康检查(基于端口和URL)
  3. VRRP高可用功能

原理:

  1. 通过VRRP(虚拟路由冗余协议)实现高可用
  2. 通过竞选机制实现高可用(手动:配置优先级,优先级大的是主,小的是备)
  3. 串口线、网线直连、局域网通信
  4. master首先以多播的方式发信息
  5. 加密数据
Keepalived高可用服务搭建

规划:
HOSTNAME IP 说明
lb01 10.0.0.5 Keepalived主服务器(Nginx主负载均衡器)
lb02 10.0.0.6 Keepalived备服务器(Nginx辅负载均衡器)
web01 10.0.0.7 web01服务器
web02 10.0.0.8 web02服务器

#部署web01
[root@web01 conf.d]# cat 02_www.etiantian.org.conf 
server {
    listen 80;
    server_name www.etiantian.org;
    root /data/www;
    location / {
    index index.html;
    }
}
[root@web01 conf.d]# mkdir -p /data/www
[root@web01 conf.d]# echo web01 >/data/www/index.html
[root@web01 conf.d]# nginx -t
[root@web01 conf.d]# systemctl restart nginx
[root@web01 conf.d]# grep www /etc/hosts
[root@web01 conf.d]# curl -H "host:www.etiantian.org" 10.0.0.7
web01
#部署web02
[root@web02 conf.d]# cat 02_www.etiantian.org.conf 
server {
    listen 80;
    server_name www.etiantian.org;
    root /data/www;
    location / {
    index index.html;
    }
}
[root@web02 conf.d]# mkdir -p /data/www
[root@web02 conf.d]# echo web02 >/data/www/index.html
[root@web02 conf.d]# nginx -t
[root@web02 conf.d]# systemctl restart nginx
[root@web02 conf.d]# curl -H "host:www.etiantian.org" 10.0.0.8
web02
#部署lb
[root@lb02 ~]# cat /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo 
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ 
gpgcheck=1 
enabled=1 
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true 
priority=1 

yum install yum-plugin-priorities -y 
yum install nginx -y 
systemctl start nginx 
systemctl enable nginx 
#从lb01拷贝配置 
[root@lb02 ~]# scp -rp 172.16.1.5:/etc/nginx /etc/ 
[root@lb02 conf.d]# cat 03_www.etiantian.org.conf 
upstream www { 
    server 172.16.1.7 weight=1; #默认80端口 
    server 172.16.1.8 weight=1; #默认80端口 
} 
server { 
listen 80; 
server_name www.etiantian.org; 
    location / { 
        proxy_pass http://www; 
        proxy_set_header Host $http_host; 
        } 
} 

nginx -t 
systemctl restart nginx 
#vip 10.0.0.6 测试负载 
[root@lb02 conf.d]# curl -H "host:www.etiantian.org" 10.0.0.6
web01 
[root@lb02 conf.d]# curl -H "host:www.etiantian.org" 10.0.0.6 
web02
#lb01,lb02分别安装keepalived
yum install keepalived -y
#参考下面修改好配置文件再启动
systemctl start keepalived
版本 keepalived-1.3.5-19.el7.x86_64
#可以网上搜索找最新版的看看怎么安装?
#Keepalived配置文件说明
TOP HIERACHY
    GLOBAL CONFIGURATION
    VRRPD CONFIGURATION
    LVS CONFIGURATION(管理LVS的,nginx此处删掉)

#Master配置 说明不做为配置。
[root@lb01 keepalived]# cat keepalived.conf
global_defs {
   router_id lb01         #<==id为lb01,不同的keepalived.conf此ID要唯一。
}
vrrp_instance VI_1 {      #<==实例名字为VI_1,相同实例的备节点名字要和这个相同。
    state MASTER          #<==状态为MASTER,备节点状态需要为BACKUP。
    interface eth0        #<==通信接口为eth0,此参数备节点设置和主节点相同。
    virtual_router_id 51  #<==实例ID为55,keepalived.conf里唯一。
    priority 150          #<==优先级为150,备节点的优先级必须比此数字低。
    advert_int 1          #<==通信检查间隔时间1秒。
    authentication {
        auth_type PASS    #<==PASS认证类型,此参数备节点设置和主节点相同。
        auth_pass 1111    #<==密码是1111,此参数备节点设置和主节点相同。
    }
    virtual_ipaddress {
        10.0.0.3/24 dev eth0 label eth0:3 #<==虚拟IP,即VIP,子网掩码为24位,绑定接口为eth0,别名为eth0:3,此参数备节点设置和主节点相同。
     }
}    #提示:此处设置的虚拟IP为10.0.0.3,即网站域名绑定的IP。

配置 lb(单实例)

#配置 lb01 keepalved.conf
[root@lb01 ~]# cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalived

global_defs {
   router_id lb01
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
      10.0.0.3/24 dev eth0 label eth0:3
    }
}

#启动
systemctl start keepalived
systemctl enable keepalived
ps -ef|grep keepalived
ifconfig|grep '10.0.0.3'
#配置 lb02 keepalved.conf
[root@lb02 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id lb02
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
      10.0.0.3/24 dev eth0 label eth0:3
    }
}
#启动
systemctl start keepalived
systemctl enable keepalived
ps -ef|grep keepalived
ifconfig|grep '10.0.0.3'
停止一端服务器。看另一端IP接管情况

配置 lb(多实例)

#配置 lb01 keepalved.conf
[root@lb01 conf.d]$cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id lb01
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
      10.0.0.3/24 dev eth0 label eth0:3
    }
}

vrrp_instance VI_2 {
    state BACKUP
    interface eth0
    virtual_router_id 52
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
      10.0.0.4/24 dev eth0 label eth0:4
    }
}

#启动
systemctl start keepalived
systemctl enable keepalived
ps -ef|grep keepalived
ifconfig|egrep '10.0.0.3|10.0.0.4'
#配置 lb02 keepalved.conf
[root@lb02 conf.d]$cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalived

global_defs {
   router_id lb02
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
      10.0.0.3/24 dev eth0 label eth0:3
    }
}

vrrp_instance VI_2 {
    state MASTER
    interface eth0
    virtual_router_id 52
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
      10.0.0.4/24 dev eth0 label eth0:4
    }
}
#启动
systemctl start keepalived
systemctl enable keepalived
ps -ef|grep keepalived
ifconfig|egrep '10.0.0.3|10.0.0.4'

单实例场景与多实例

单实例hosts
lb01:
10.0.0.3 www.etiantian.org blog.etiantian.org
lb02:热备 浪费机器

多实例hosts
两边跑服务;
lb01:
10.0.0.3 www.etiantian.org
lb02:
10.0.0.4 blog.etiantian.org
某一台宕机,总流量能被撑住即可。