haproxy部署脚本
最近为了测试haproxy的负载均衡,打算搭建几台haproxy测试机,但我又懒想直接用脚本搭建起就可以使用,以后要测试的时候,也可以直接就用脚本搞定.下面来看脚本吧.
cat /root/soft_shell/haproxy_install.sh
#!/bin/bash #install haproxy #20160224 by rocdk890 #variables dir=/usr/local ha_dir=${dir}/haproxy ha_cfg=${ha_dir}/conf/haproxy.cfg ha_init=/etc/init.d/haproxy kernel=`uname -r | grep '2.6'` pcre=$(rpm -qa | grep 'pcre' | wc -l) echo "$dir, $ha_dir, $ha_cfg, $kernel, $pcre" #check if [ ! "$kernel" -o "$pcre" -lt "2" ];then echo -e "the script need linux 2.6 kernel and pcre pcre-devel \nyou can usage 'yum install pcre pcre-devel' or 'rpm -ivh pcre-devel-6.6-2.el5_1.7.x86_64.rpm'" exit 1 fi #function install_ha_cfg (){ #configure haproxy.cfg #default configure file for test,but need your change the frontend server and backend server ip address, #good luck! echo ' global log 127.0.0.1 local0 maxconn 4096 #最大连接数 chroot /usr/local/haproxy #安装目录 uid 99 #用户haproxy gid 99 #组haproxy daemon #守护进程运行 nbproc 1 #进程数量 #pidfile /usr/local/haproxy/logs/haproxy.pid #haproxy pid pidfile /usr/local/haproxy/haproxy.pid #haproxy pid defaults log global mode http #7层 http;4层tcp option httplog #http 日志格式 option httpclose #主动关闭http通道 option redispatch #serverId对应的服务器挂掉后,强制定向到其他健康的服务器 option dontlognull maxconn 2000 #最大连接数 contimeout 5000 #连接超时(毫秒) clitimeout 50000 #客户端超时(毫秒) srvtimeout 50000 #服务器超时(毫秒) frontend haproxy_test #定义前端服务器(haproxy) bind *:80 #监听地址 default_backend server_pool #指定后端服务器群 #errorfile 502 /usr/local/haproxy/html/maintain.html #errorfile 503 /usr/local/haproxy/html/maintain.html #errorfile 504 /usr/local/haproxy/html/maintain.html backend server_pool #定义后端服务器群(web server/apache/nginx/iis..) mode http option forwardfor #后端服务器(apache/nginx/iis/*),从Http Header中获得客户端IP balance roundrobin #负载均衡的方式,轮询方式 #balance leastconn #负载均衡的方式,最小连接 cookie SERVERID #插入serverid到cookie中,serverid后面可以定义 option httpchk HEAD /check.html #用来做健康检查html文档 server server1 10.0.1.252:80 cookie server1 check inter 2000 rise 3 fall 3 weight 3 server server1 10.0.1.253:80 cookie server1 check inter 2000 rise 3 fall 3 weight 3 server server1 10.0.1.254:80 cookie server1 check inter 2000 rise 3 fall 3 weight 3 #server server2 10.0.1.253:80 cookie server2 check inter 2000 rise 3 fall 3 maxconn 120 weight 3 #server server3 10.0.1.254:80 cookie server3 check maxconn 90 rise 2 fall 3 weight 3 #服务器定义: #cookie server1表示serverid为server1; #check inter 2000 是检测心跳频率(check 默认 ); #rise 3 表示 3次正确认为服务器可用; #fall 3 表示 3次失败认为服务器不可用; #weight 表示权重。 listen admin_stat #status bind *:8080 #监听端口 mode http #http的7层模式 stats refresh 30s #统计页面自动刷新时间 stats uri /haproxy-stats #统计页面URL stats realm Haproxy\ Statistics #统计页面密码框上提示文本 stats auth admin:admin #统计页面用户名和密码设置 stats hide-version #隐藏统计页面上HAProxy的版本信息 stats admin if TRUE #手工启用/禁用,后端服务器 ' > "$ha_cfg" && sed -i '1 d' "$ha_cfg" } install_ha_init.d (){ #configure /etc/init.d/haproxy if [ ! -e "$ha_init" ];then wget -c http://download.slogra.com/haproxy/haproxy -O /etc/init.d/haproxy chmod +x /etc/init.d/haproxy chkconfig haproxy on else echo "File haproxy already there !" fi } #install if [ ! -e "$ha_dir" ];then wget -nc http://download.slogra.com/haproxy/haproxy-1.4.26.tar.gz tar zxf haproxy*.tar.gz cd haproxy*/ make TARGET=linux26 USE_STATIC_PCRE=1 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy && mkdir /usr/local/haproxy/{html,logs,conf} cd ../ # if [ ! -e "$ha_dir" ];then echo "error! can't install haproxy please check ! Will now out of the script !" exit 1 else ! grep 'haproxy' /etc/syslog.conf && echo 'local1.* /var/log/haproxy.log' >> /etc/syslog.conf sed -ir 's/SYSLOGD_OPTIONS="-m 0"/SYSLOGD_OPTIONS="-r -m 0"/g' /etc/sysconfig/syslog && /etc/init.d/syslog restart install_ha_cfg install_ha_init.d rm -rf haproxy*/ fi else echo "haproxy is already exists!" fi
本脚本把启动文件也放进去了的,所以启动的时候可以直接执行service haproxy start,当然最好是先改好了配置文件再启动.好了,配置文件里也有说明方便大家自己修改.
评论: