1、haproxy +keepalived 部署
2、Harpoxy安装
命令:# make PREFIX=/data/haproxy/configureHaproxy TARGET=linux2628
3、安装
命令: 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。
4、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 192.168.20.112:8888 check inter 2000 fall 5
server redis-234 192.168.20.113:8889 check inter 2000 fall 5
在conf 路劲下面创建一个haproxy.pid
两台服务器配置一样
启停haproxy
命令: service haproxy start
命令: service haproxy stop
重启
命令:service haproxy restart
5、Keepalived 安装
命令:tar -zxvf keepalived-2.0.18.tar.gz 并进入目录
有可能需要依赖
yum -y install libnl libnl-devel
2.执行配置,指定路径
命令:./configure --prefix=/data/keepalived/configureKeepalived/
3.编译
命令:make && make install
4.拷贝配置文件
命令:cp /data/keepalived/keepalived-2.0.18/keepalived/etc/init.d/keepalived /etc/init.d/
2.#拷贝编译后的 keepalived 到 /etc/sysconfig/
命令:cp /data/keepalived/configureKeepalived/etc/sysconfig/keepalived /etc/sysconfig/
3.创建文件夹
命令:mkdir /etc/keepalived
4. 把配置文件移动到文件夹中
命令:cp /data/keepalived/configureKeepalived/etc/keepalived/keepalived.conf /etc/keepalived/
5.把执行文件移动到/usr/sbin 下面
命令:cp /data/keepalived/configureKeepalived/sbin/keepalived /usr/sbin/
6.修改配置文件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 {
192.168.20.114 #漂移ip
}
}
6、创建检查脚本
检查服务器简况状态: 比如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
7、启动
命令:systemctl start keepalived