- haproxy +keepalived 部署
- 准备工作
- 准备安装包 haproxy-1.7.8.tar.gz 与 keepalived-2.0.18.tar.gz 包
- 准备服务器两台 10.163.44.119,10.163.44.120
- 准备浮动ip(同网段) 10.163.44.156
- Harpoxy安装
- 解压
- 准备工作
# tar zxvf haproxy-1.7.8.tar.gz
-
-
- 编译
-
# cd haproxy-1.7.8
# make PREFIX=/data/haproxy/configureHaproxy TARGET=linux2628
-
-
- 安装
-
# make install PREFIX=/data/harpoxy/configureHaproxy
执行完这一步/data/haproxy/ 路劲下面将会有个configureHaproxy 文件夹
PREFIX 为指定的安装路径
TARGET则根据当前操作系统内核版本指定
-
- - linux22 for Linux 2.2
- - linux24 for Linux 2.4 and above (default)
- - linux24e for Linux 2.4 with support for a working epoll (> 0.21)
- - linux26 for Linux 2.6 and above
- - linux2628 for Linux 2.6.28, 3.x, and above (enables splice and tproxy)
本文的操作系统内核版本为3.10.0,TARGET指定为 linux2628。
-
- haproxy 配置
- 创建修改配置文件
- haproxy 配置
# cd /data/haproxy/configureHaproxy
# mkdir conf
# cd conf
# vi haproxy.cfg
输入一下内容
具体内容如下
global
log 127.0.0.1 local3 info
user haproxy
group haproxy
daemon
maxconn 4000
pidfile /data/haproxy/configureHaproxy/conf/haproxy.pid
defaults
log global
mode tcp #所处理的类别,默认采用http模式,可配置成tcp作4层消息转发
maxconn 4096 #限制单个进程的最大连接数
option tcplog #http 日志格式
option dontlognull #不记录空连接
option forwardfor #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip
option httpclose #每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只能模拟这种模式的实现
option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的连接
option redispatch #在连接失败或断开的情况下,允许当前会话被重新分发
retries 3 #设置在一个服务器上链接失败后的重连次数
balance source #表示根据请求源IP,这个跟Nginx的IP_hash机制类似,我们用其作为解决session问题的一种方法。
timeout client 30s #设置客户端的最大超时时间(毫秒)
timeout connect 5s #设置等待连接到服务器成功的最大时间
timeout server 30s #设置服务器端的最大超时时间
timeout check 5s #心跳检测时间
frontend secure #自定义一个frontend,也可以放在listen或者backend中
bind *:8080 #监听的ip端口号
stats enable #开关
mode http
option httplog
log global
maxconn 10
stats uri /admin #访问的uri ip:8888/admin?admin
stats auth admin:admin #认证用户名和密码
stats hide-version #隐藏HAProxy的版本号
stats admin if TRUE #管理界面,如果认证成功了,可通过webui管理节点
stats refresh 30s #统计页面自动刷新时间
frontend tcp_front
bind *:8888
#haproxy的状态管理页面,通过/haproxy?stats来访问
default_backend tcp_back
backend tcp_back
mode tcp
balance roundrobin
server redis-233 10.163.44.119:8888 check inter 2000 fall 5
server redis-234 10.163.44.120:8889 check inter 2000 fall 5
-
-
- 在conf 路劲下面创建一个haproxy.pid
-
两台服务器配置一样
-
-
- 启停haproxy
-
service haproxy start
service haproxy stop
重启
# service haproxy restart
-
- Keepalived 安装
- 进入执行目录解压
- Keepalived 安装
命令:tar -zxvf keepalived-2.0.18.tar.gz 并进入目录
有可能需要依赖
yum -y install libnl libnl-devel
-
-
- 执行配置,指定路径
-
./configure --prefix=/data/keepalived/configureKeepalived/
-
-
- 编译
-
命令:make && make install
-
-
- 拷贝配置文件
- #拷贝源码中的keepalived 到/etc/init.d/
- 拷贝配置文件
-
命令:cp /data/keepalived/keepalived-2.0.18/keepalived/etc/init.d/keepalived /etc/init.d/
-
-
-
- #拷贝编译后的 keepalived 到 /etc/sysconfig/
-
-
命令:cp /data/keepalived/configureKeepalived/etc/sysconfig/keepalived /etc/sysconfig/
-
-
-
- 创建文件夹
-
-
mkdir /etc/keepalived
-
-
-
- 把配置文件移动到文件夹中
-
-
cp /data/keepalived/configureKeepalived/etc/keepalived/keepalived.conf /etc/keepalived/
-
-
-
- 把执行文件移动到/usr/sbin 下面
-
-
cp /data/keepalived/configureKeepalived/sbin/keepalived /usr/sbin/
-
-
- 修改配置文件keepalived.conf 输入一下内容
-
global_defs {
smtp_connect_timeout 30
router_id LVS_DEVEL02 #两个服务器不能一样
}
vrrp_instance VI_1 {
state BACKUP #备份服务器 是backup
interface eno16777736
virtual_router_id 51
priority 90 #优先级要低 (两台服务器不一样 搞得问主机)
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.163.44.156 #漂移ip
}
}
-
-
- 创建检查脚本
-
检查服务器简况状态: 比如haproxy 停止了但是keepalived 并没有停止
这个使用需要使用脚本来进行切换: 脚本如下:
"check_haproxy.sh" 12L, 474C
#!/bin/bash
#echo "`date` haproxy is dead1" >> /etc/keepalived/aa.log
status=$(ps aux|grep haproxy | grep -v grep | grep -v bash | wc -l)
#echo "`date` haproxy is dead2" >> /etc/keepalived/aa.log
if [ "${status}" = "0" ]; then
# echo "`date` haproxy is dead" >> /etc/keepalived/aa.log
systemctl start haproxy
status2=$(ps aux|grep haproxy | grep -v grep | grep -v bash |wc -l)
if [ "${status2}" = "0" ]; then
systemctl stop keepalived
fi
fi
-
-
- 启动
-
systemctl start keepalived