#!/bin/bash
#CentOS 7 安装 haproxy-2.6.6
#安装haproxy
#安装依赖包
yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel
#在/目录中新建app目录
mkdir -pv /app
#进入/app目录
cd /app
#上传haproxy-2.6.6.tar.gz至/app
#rz
#下载
#wget http://192.168.0.61/mirror/7/x86_64/tar/h/haproxy-2.6.6.tar.gz
#wget http://mirror.domain.com/mirror/7/x86_64/tar/h/haproxy-2.6.6.tar.gz
#添加 haproxy 组
groupadd --system haproxy
#添加 haproxy 用户隶属于 haproxy 组
useradd --system -g haproxy -s /sbin/nologin haproxy
#useradd -s /sbin/nologin -M haproxy #--创建一个不可登录系统,且没有家目录的用户
#判断目录存就删除
if [ -d /app/haproxy-2.6.6 ];then
# echo "ok"
`rm -rf /app/haproxy-2.6.6`
else
echo "no"
fi
#解压haproxy-2.6.6.tar.gz到/app
tar -zxvf /app/haproxy-2.6.6.tar.gz -C /app
#查看内核版本
uname -r
#进入haproxy-2.6.6目录
cd /app/haproxy-2.6.6
#编译,在编译时要对应操作系统的版本号
#make TARGET=linux310 USE_OPENSSL=1 ADDLIB=-lz ARCH=x86_64 PREFIX=/usr/local/haproxy
make TARGET=linux310 ARCH=x86_64 TARGET=linux-glibc USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 ADDLIB=-lz PREFIX=/usr/local/haproxy
#make TARGET=linux310 ARCH=x86_64 TARGET=linux-glibc USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 ADDLIB=-lz PREFIX=/usr/local/haproxy
#make ARCH=x86_64 TARGET=linux-glibc USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_LUA=1 LUA_INC=/usr/local/lua/src/ LUA_LIB=/usr/local/lua/src/ #这里两个路径与之前移动的lua路径要保持一致。
如报错
CC src/ev_poll.o make: cc:命令未找到 make: *** [src/ev_poll.o] 错误 127
错误原因:系统未安装gcc,这个是由于在安装操作系统时,没有选择安装开发工具,因为默认是不选中安装
yum install gcc gcc-c++
#编译安装
make install PREFIX=/usr/local/haproxy
#拷贝错误页面
cp -arfv /app/haproxy-2.6.6/examples/errorfiles /usr/local/haproxy
#创建日志文件目录
mkdir -pv /usr/local/haproxy/{conf,logs,run}
#创建日志文件
touch /usr/local/haproxy/logs/haproxy.log
#添加环境变量
#echo "export PATH=\$PATH:/usr/local/haproxy/sbin" >> /etc/profile
#添加环境变量
cat >> /etc/profile <<EOF
export PATH=\$PATH:/usr/local/haproxy/sbin
EOF
#加载环境变量
source /etc/profile
#查看版本
#/usr/local/haproxy/sbin/haproxy -vv
haproxy -v
#创建run目录
mkdir -pv /usr/local/haproxy/run
#创建配置文件
mkdir -pv /usr/local/haproxy/conf
#创建配置文件
#vim /usr/local/haproxy/conf/haproxy.cfg
##### 配置参数
###### haproxy.cfg
#vim /usr/local/haproxy/conf/haproxy.cfg
#
#global
# log 127.0.0.1 local0
# maxconn 4096 #最大连接数
# chroot /usr/local/haproxy #主目录
# #uid 99 #所属运行的用户uid
# #gid 99 #所属运行的用户组
# pidfile /usr/local/haproxy/run/haproxy.pid #将所有进程写入pid文件
# #debug #调试错误时用
# #quiet #安静
# daemon
#defaults
# log global
# mode http #工作模式,所处理的类别,默认采用http模式,可配置成tcp作4层消息转发
# option httplog #日志类别,记载http日志
# option dontlognull #不记录空连接,产生的日志
# option forwardfor #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip
# option redispatch #当serverid对应的服务器挂掉后,强制定向到其他健康服务器
# retries 2 #2次连接失败就认为服务器不可用,主要通过后面的check检查
# maxconn 2000 #最大连接数
# balance roundrobin #负载均衡算法
# timeout connect 5000 #连接超时时间。 单位:ms 毫秒
# timeout client 50000 #客户端连接超时时间
# timeout server 50000 #服务器端连接超时时间
## option httpchk GET /index.html #健康检测,开启后默认为7层代理。使用tcp 4层转发时,必须注释掉
# #注意实际工作中测试时,应该下载某一个页面来进行测试,因此这个页面应该是个小页面,而不要用首页面。这里是每隔一秒检查一次页面。
#
#listen admin_status
# bind 0.0.0.0:1080
# mode http
# option httplog
# maxconn 10
# stats refresh 30s
# stats uri /status #haproxy 监控页面的访问地址 # 可通过 http://localhost:1080/stats 访问
# stats realm XingCloud\ Haproxy
# stats auth admin:admin #用户和密码
# stats auth Frank:Frank
# stats hide-version
# stats admin if TRUE
#
##frontend status #前端配置,status名称可自定义
## bind 0.0.0.0:80 #发起http请求80端口,会被转发到设置的ip及端口
## default_backend http_status #转发到后端 写上后端名称
## backend http_status #后端配置,名称上下关联
## balance roundrobin #定义负载均衡算法,可用于"defaults"、"listen"和"backend"中,默认为轮询方式
##
## server node1 localhost:1080 check port 1080 inter 2000ms rise 2 fall 3 weight 10 #后端的主机 IP &权衡
## server node2 localhost:1080 check port 1080 inter 2000ms rise 2 fall 3 weight 10 #后端的主机 IP &权衡
##
## server node ip:port check port 80 inter 2000 rise 3 fall 3 weight 30 #后端的主机
## server 名称
## node 定义节点名称,需要唯一名称
## ip 节点的IP地址
## port 节点的端口
## check 后面跟的是检查的项目
## port 80 检查80端口
## inter 2000 健康检查时间间隔2秒
## rise 3 检测多少次才认为是正常的
## fall 3 失败多少次才认为是不可用的
## weight 1 权重
##### 配置参数
###### haproxy.cfg
cat > /usr/local/haproxy/conf/haproxy.cfg <<EOF
global
log 127.0.0.1 local0
maxconn 4096
chroot /usr/local/haproxy
#uid 99
#gid 99
pidfile /usr/local/haproxy/run/haproxy.pid
#debug
#quiet
daemon
defaults
log global
mode http
option httplog
option dontlognull
option forwardfor
option redispatch
retries 2
maxconn 2000
balance roundrobin
timeout connect 5000
timeout client 50000
timeout server 50000
# option httpchk GET /index.html
listen admin_status
bind 0.0.0.0:1080
mode http
option httplog
maxconn 10
stats refresh 30s
stats uri /status
stats realm XingCloud\ Haproxy
stats auth admin:12345@Admin
stats auth Frank:Frank
stats hide-version
stats admin if TRUE
#frontend status
# bind 0.0.0.0:80
# default_backend http_status
# backend http_status
# balance roundrobin
#
# server node1 localhost:1080 check port 1080 inter 2000ms rise 2 fall 3 weight 10
# server node2 localhost:1080 check port 1080 inter 2000ms rise 2 fall 3 weight 10
EOF
#检查配置文件
/usr/local/haproxy/sbin/haproxy -c -f /usr/local/haproxy/conf/haproxy.cfg
#创建启动脚本,方式一
#vim /usr/local/haproxy/sbin/haproxy_start.sh
#!/bin/bash
#description:开机自启脚本
#启动haproxy
#获取程序的当前路径
#path_dir=$(cd "$(dirname "$0")"; pwd)
#echo $path_dir
#获取上一级目录
#path=$(dirname "$path_dir")
#echo $path
#`/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg`
#添加启动脚本,方式二
cat > /usr/local/haproxy/sbin/haproxy_start.sh <<EOF
#!/bin/bash
#description:启动脚本
#启动haproxy
#获取程序的当前路径
path_dir=\$(cd "\$(dirname "\$0")"; pwd)
#echo \$path_dir
#获取上一级目录
path=\$(dirname "\$path_dir")
#echo \$path
\`/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg\`
EOF
#添加可执行权限
chmod +x /usr/local/haproxy/sbin/haproxy_start.sh
#添加服务,方式一
#vim /usr/lib/systemd/system/haproxy.service
#[Uni
评论0