haproxy 1.6. 4+ keepalived安装 部署笔记

1.系统
CentOS Linux release 7.2.1511 (Core)
2.应用软件
haproxy-1.6.4
keepalived-2.0.11.tar.gz
mount /dev/cdrom /media
 
安装依赖环境
yum -y install kernel-devel openssl-devel popt-devel
yum -y install gcc automake autoconf libtool make
 
 
上传haproxy包/root目录下
进入目录cd haproxy 1.7
make TARGET=linux26 CPU=x86_64 PREFIX=/usr/local/haprpxy USE_OPENSSL=1  ADDLIB=-lz
make install PREFIX=/usr/local/haproxy
mkdir  /usr/local/haproxy/conf
 
  mkdir /etc/haproxy
    cp -r examples/errorfiles/ /usr/local/haproxy/
ln -s /usr/local/haproxy/errorfiles/ /etc/haproxy/
配置启动脚本
cp examples/haproxy.init /etc/init.d/haproxy
vi /etc/init.d/haproxy
(修改地方)
BIN=/usr/local/haproxy/sbin/haproxy
# haproxy命令所在的位置
CFG=/usr/local/haproxy/conf/haproxy.cfg
# haproxy.cfg为haproxy的配置文件
  ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin/
 
chmod +x /etc/init.d/haproxy
useradd -r haproxy -s /sbin/nologin
 
修改/usr/local/haproxy/conf/haproxy.cfg     配置文件中的 uid号码
 
 
#修改ha配置文件中的 账户UID和GID
cat /etc/passwd 查看haproxy的用户uid
haproxy.cfg
ln -s  /usr/local/haproxy/conf/haproxy.cfg  /etc/haproxy/haproxy.cfg 
mkdir -p  /usr/local/haproxy/log 
touch /usr/local/haproxy/log/haproxy.log
ln -s  /usr/local/haproxy/log/haproxy.log  /var/log/haproxy.log
chkconfig haproxy on  #设置开机启动
 
 
 
关闭IPTBALES开启启动务:
chkconfig iptables off
service iptables stop
 
重启务器:reboot
#haproxy端口和状态及账户密码在配置文件看
 
########################################################################

global                             
   log 127.0.0.1 local3 info         #在本机记录日志
   maxconn 65535                     #每个进程可用的最大连接数
   chroot /usr/local/haproxy         #haproxy 安装目录
   uid 65534                           #运行haproxy的用户uid(cat /etc/passwd 查看,这里是nobody的uid)
   gid 65534                            #运行haproxy的用户组id(cat /etc/passwd 查看,这里是nobody组id)
   daemon                            #以后台守护进程运行
   #stats socket /var/run/haproxy.stat mode 600 level operator
   stats socket /var/run/haproxy.sock mode 600 level admin
   stats timeout 2m
   log         127.0.0.1 local2
defaults
   log global
   mode http                         #运行模式 tcp、 http、 health
   retries 3                         #三次连接失败,则判断服务不可用
   option redispatch                 #如果后端有服务器宕机,强制切换到正常服务器
   maxconn 65535                     #每个进程可用的最大连接数
   timeout connect 5000              #连接超时
   timeout client 50000              #客户端超时
   timeout server 50000              #服务器端超时

listen stats_134
        bind 0.0.0.0:50040
        mode http
        option httplog
        maxconn 10
        stats refresh 30s
        stats uri /stats
        #stats realm XingCloud\ Haproxy
        stats auth admin:admin #用这个账号登录,可以自己设置
  stats enable
        stats auth Frank:Frank
        stats hide-version
        stats admin if TRUE

 

frontend https_frontend
  bind *:443
  mode tcp
  default_backend web_server

backend web_server
  mode tcp
balance roundrobin
  stick-table type ip size 200k expire 30m
  stick on src
  server s1 192.168.31.165:443 check inter 1500 rise 3 fall 3 weight 1
  server s2 192.168.31.166:443 check inter 1500 rise 3 fall 3 weight 1
########################
 

 

 
 
 
 
 
启动务:
# /usr/local/haproxy/sbin/haproxy -f      /usr/local/haproxy/conf/haproxy.cfg
 
 
停止务:
# killall haproxy
 
 
输入URL全路径查看务:
 
 
 
 
1.2上传keepalived安装包解压安装
tar zxf keepalived-1.2.13.tar.gz
cd keepalived-1.2.13/
./configure --prefix=/ --with-kelnel-dir= /usr/src/kernels/3.10.0-514.el7.x86_64/
 make && make install
chkconfig  --add keepalived
chkconfig  keepalived  on
cd /etc/keepalived/
vim keepalived.conf
 
 
keepalived-backup.conf
 
keepalived-master.conf
 
文件更名后覆盖到 /etc/keepalived/
##此处为主备机keepalived.conf样例更名为keepalived.conf并更改相应信息就可使用
 
/etc/init.d/keepalived start 启动服务 在主机使用ip addr查看是否有vip,有则部署完成
 
keepalived-master
#####################################################################
 
! Configuration File for keepalived
global_defs {
# notification_email{
#        admin@example1.com        #事件发生时,发送email地址
#}
# notification_email_from admin@example.com     #邮件发送地址
# smtp_server 127.0.0.1        #邮件smtp地址
# smtp_connect_timeout 30        #连接smtp超时时间
 router_id KeepHA01        #服务唯一标识
 
# vrrp_skip_check_adv_addr       #检测对VRRP数据包源地址检测,开启后会增加时耗
# vrrp_strict         #是否严格执行VRRP协议,建议关闭
# vrrp_garp_interval 0                                                            #通过接口发送免费ARP延迟,默认为0
# vrrp_gna_interval 0                                                             #发送网卡na消息延迟,默认为0
}
vrrp_script chk_haproxy {
 script "/etc/keepalived/chk.sh"       #检测服务脚本路径
 interval 2         #检测时间间隔,单位s
 weight -20         #服务检测失败,权重降级值              
}

vrrp_instance VI_1 {
 state MASTER         #指定实例的初始状态,MASTER为主,BACKUP为备
 interface eth3        #实例绑定网卡,通过此网卡发送VRRP包,可选非VIP网卡
 #track_interface {        监控以下网卡,任何一个down就会切换到FALT(可选)
 #eth0
 #eth1}  
 virtual_router_id 101        #虚拟路由标识,数字组成,整个局域网内唯一 MASTER和BACKUP一致
 preempt          #抢占模式,当优先级高时,自动抢占为MASTER
 mcast_src_ip 192.168.31.167       #发送VRRP通告地址,不设置默认使用interface指定的网卡。注:选用稳定网卡发送
 priority 100         #设置节点优先级,数值越大,优先级越高,范围:0-255
 advert_int 1         #MASTER与BACKUP之间同步检查的时间间隔,单位为秒
 virtual_ipaddress {        #虚拟ip地址,可多个,每个地址占一行,格式:<IPADDR/MASK> <IPADDR> <IPADDR/MASK dev 网卡名称>
  192.168.31.200/24 dev eth3
 }
 authentication {       
         auth_type PASS        #验证类型,类型主要有PASS、AH两种,常用PASS,密码是明文,AH为 ipsec 认证头认证,不需要配置密码 。
         auth_pass 1111        #设置VRRP实例通信密码,MASTER与BACKUP使用相同的密码才能正常通信。
 }
 track_script {         #指定脚本名称,与vrrp_script设定名称一致
  chk_haproxy
 }
# notify_master "/etc/init.d/haproxy restart"     #当前节点成为主节点时触发的脚本
# notify_backup "/etc/init.d/haproxy stop"     #当前节点成为备节点时触发的脚本
}
#####################################################################
 
 
 
 
 
 
 
keepalived-master
#####################################################################
 
! Configuration File for keepalived
global_defs {
# notification_email{
#        admin@example1.com        #事件发生时,发送email地址
#}
# notification_email_from admin@example.com     #邮件发送地址
# smtp_server 127.0.0.1        #邮件smtp地址
# smtp_connect_timeout 30        #连接smtp超时时间
 router_id KeepHA02        #服务唯一标识
 
# vrrp_skip_check_adv_addr       #检测对VRRP数据包源地址检测,开启后会增加时耗
# vrrp_strict         #是否严格执行VRRP协议,建议关闭
# vrrp_garp_interval 0                                                            #通过接口发送免费ARP延迟,默认为0
# vrrp_gna_interval 0                                                             #发送网卡na消息延迟,默认为0
}
vrrp_script chk_haproxy {
 script "/etc/keepalived/chk.sh"       #检测服务脚本路径
 interval 2         #检测时间间隔,单位s
 weight -20         #服务检测失败,权重降级值              
}

vrrp_instance VI_1 {
 state BACKUP         #指定实例的初始状态,MASTER为主,BACKUP为备
 interface eth2         #实例绑定网卡,通过此网卡发送VRRP包,可选非VIP网卡
 #track_interface {        监控以下网卡,任何一个down就会切换到FALT(可选)
 #eth0
 #eth1}  
 virtual_router_id 101        #虚拟路由标识,数字组成,整个局域网内唯一 MASTER和BACKUP一致
 preempt          #抢占模式,当优先级高时,自动抢占为MASTER
 mcast_src_ip 192.168.31.168     #写本机IP地址 发送VRRP通告地址,不设置默认使用interface指定的网卡。注:选用稳定网卡发送
 priority 90         #设置节点优先级,数值越大,优先级越高,范围:0-255
 advert_int 1         #MASTER与BACKUP之间同步检查的时间间隔,单位为秒
 virtual_ipaddress {        #虚拟ip地址,可多个,每个地址占一行,格式:<IPADDR/MASK> <IPADDR> <IPADDR/MASK dev 网卡名称>
  192.168.31.200/24 dev eth2
 }
 authentication {       
         auth_type PASS        #验证类型,类型主要有PASS、AH两种,常用PASS,密码是明文,AH为 ipsec 认证头认证,不需要配置密码 。
         auth_pass 1111        #设置VRRP实例通信密码,MASTER与BACKUP使用相同的密码才能正常通信。
 }
 track_script {         #指定脚本名称,与vrrp_script设定名称一致
  chk_haproxy
 }
# notify_master "/etc/init.d/haproxy restart"     #当前节点成为主节点时触发的脚本
# notify_backup "/etc/init.d/haproxy stop"     #当前节点成为备节点时触发的脚本
}

global                             
   log 127.0.0.1 local3 info         #在本机记录日志
   maxconn 65535                     #每个进程可用的最大连接数
   chroot /usr/local/haproxy         #haproxy 安装目录
   uid 65534                           #运行haproxy的用户uid(cat /etc/passwd 查看,这里是nobody的uid)
   gid 65534                            #运行haproxy的用户组id(cat /etc/passwd 查看,这里是nobody组id)
   daemon                            #以后台守护进程运行
   #stats socket /var/run/haproxy.stat mode 600 level operator
   stats socket /var/run/haproxy.sock mode 600 level admin
   stats timeout 2m
   log         127.0.0.1 local2
defaults
   log global
   mode http                         #运行模式 tcp、 http、 health
   retries 3                         #三次连接失败,则判断服务不可用
   option redispatch                 #如果后端有服务器宕机,强制切换到正常服务器
   maxconn 65535                     #每个进程可用的最大连接数
   timeout connect 5000              #连接超时
   timeout client 50000              #客户端超时
   timeout server 50000              #服务器端超时

listen stats_134
        bind 0.0.0.0:50040
        mode http
        option httplog
        maxconn 10
        stats refresh 30s
        stats uri /stats
        #stats realm XingCloud\ Haproxy
        stats auth admin:admin #用这个账号登录,可以自己设置
  stats enable
        stats auth Frank:Frank
        stats hide-version
        stats admin if TRUE

 

frontend https_frontend
  bind *:443
  mode tcp
  default_backend web_server

backend web_server
  mode tcp
balance roundrobin
  stick-table type ip size 200k expire 30m
  stick on src
  server s1 192.168.31.165:443 check inter 1500 rise 3 fall 3 weight 1
  server s2 192.168.31.166:443 check inter 1500 rise 3 fall 3 weight 1
       
#frontend http-in                     #自定义描述信息
#   mode http                         #运行模式 tcp、 http、 health
#   maxconn 65535                     #每个进程可用的最大连接数
#  bind *:80                          #监听 80 端口
#   log global                      
#   option httplog                  
#   option httpclose                  #每次请求完毕后主动关闭 http 通道
#   acl is_a hdr_beg(host) -i www.wangshibo.com        #规则设置,-i 后面是要访问的域名
#   acl is_b hdr_beg(host) -i www.guohuihui.com        #如果多个域名,就写多个规则,一规则对应一个域名;即后面有多个域名,就写 is_c、 is-d….,这个名字可以随意起。但要与下面的use_backend 对应
#   use_backend web-server if is_a    #如果访问 is_a 设置的域名,就负载均衡到下面backend 设置的对应 web-server 上。web-server所负载的域名要都部署到下面的web01和web02上。如果是不同的域名部署到不同的机器上,就定义不同的web-server。
#   use_backend web-server if is_b
 

 

posted @ 2020-08-11 17:41  夏日麽麽茶  阅读(143)  评论(0编辑  收藏  举报