[root@monitor app1]# yum install haproxy Loaded plugins: security base | 3.7 kB 00:00 epel | 4.3 kB 00:00 epel/primary_db | 5.9 MB 00:05 extras | 3.4 kB 00:00 updates | 3.4 kB 00:00 updates/primary_db | 5.2 MB 00:04 Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package haproxy.x86_64 0:1.5.4-2.el6_7.2 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: haproxy x86_64 1.5.4-2.el6_7.2 updates 792 k Transaction Summary ================================================================================ Install 1 Package(s) Total download size: 792 k Installed size: 2.4 M Is this ok [y/N]: y Downloading Packages: haproxy-1.5.4-2.el6_7.2.x86_64.rpm | 792 kB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Warning: RPMDB altered outside of yum. Installing : haproxy-1.5.4-2.el6_7.2.x86_64 1/1 Verifying : haproxy-1.5.4-2.el6_7.2.x86_64 1/1 Installed: haproxy.x86_64 0:1.5.4-2.el6_7.2 Complete!
装了那些东西:
[root@monitor app1]# rpm -ql haproxy.x86_64 0:1.5.4-2.el6_7.2 /etc/haproxy /etc/haproxy/haproxy.cfg /etc/logrotate.d/haproxy /etc/rc.d/init.d/haproxy /etc/sysconfig/haproxy /usr/bin/halog /usr/bin/iprange /usr/sbin/haproxy /usr/share/doc/haproxy-1.5.4 /usr/share/doc/haproxy-1.5.4/CHANGELOG /usr/share/doc/haproxy-1.5.4/LICENSE /usr/share/doc/haproxy-1.5.4/README /usr/share/doc/haproxy-1.5.4/acl-content-sw.cfg /usr/share/doc/haproxy-1.5.4/acl.fig /usr/share/doc/haproxy-1.5.4/architecture.txt /usr/share/doc/haproxy-1.5.4/close-options.txt /usr/share/doc/haproxy-1.5.4/coding-style.txt /usr/share/doc/haproxy-1.5.4/configuration.txt /usr/share/doc/haproxy-1.5.4/content-sw-sample.cfg /usr/share/doc/haproxy-1.5.4/cookie-options.txt /usr/share/doc/haproxy-1.5.4/cttproxy-src.cfg /usr/share/doc/haproxy-1.5.4/design-thoughts /usr/share/doc/haproxy-1.5.4/design-thoughts/backends-v0.txt /usr/share/doc/haproxy-1.5.4/design-thoughts/backends.txt /usr/share/doc/haproxy-1.5.4/design-thoughts/be-fe-changes.txt /usr/share/doc/haproxy-1.5.4/design-thoughts/binding-possibilities.txt /usr/share/doc/haproxy-1.5.4/design-thoughts/buffer-redesign.txt /usr/share/doc/haproxy-1.5.4/design-thoughts/buffers.fig /usr/share/doc/haproxy-1.5.4/design-thoughts/config-language.txt /usr/share/doc/haproxy-1.5.4/design-thoughts/connection-reuse.txt /usr/share/doc/haproxy-1.5.4/design-thoughts/cttproxy-changes.txt /usr/share/doc/haproxy-1.5.4/design-thoughts/entities-v2.txt /usr/share/doc/haproxy-1.5.4/design-thoughts/how-it-works.txt /usr/share/doc/haproxy-1.5.4/design-thoughts/http_load_time.url /usr/share/doc/haproxy-1.5.4/design-thoughts/rate-shaping.txt /usr/share/doc/haproxy-1.5.4/design-thoughts/sess_par_sec.txt /usr/share/doc/haproxy-1.5.4/gpl.txt /usr/share/doc/haproxy-1.5.4/haproxy-en.txt /usr/share/doc/haproxy-1.5.4/haproxy-fr.txt /usr/share/doc/haproxy-1.5.4/haproxy.1 /usr/share/doc/haproxy-1.5.4/haproxy.cfg /usr/share/doc/haproxy-1.5.4/internals /usr/share/doc/haproxy-1.5.4/internals/acl.txt /usr/share/doc/haproxy-1.5.4/internals/body-parsing.txt /usr/share/doc/haproxy-1.5.4/internals/buffer-operations.txt /usr/share/doc/haproxy-1.5.4/internals/buffer-ops.fig /usr/share/doc/haproxy-1.5.4/internals/connect-status.txt /usr/share/doc/haproxy-1.5.4/internals/connection-header.txt /usr/share/doc/haproxy-1.5.4/internals/connection-scale.txt /usr/share/doc/haproxy-1.5.4/internals/entities.fig /usr/share/doc/haproxy-1.5.4/internals/entities.pdf /usr/share/doc/haproxy-1.5.4/internals/entities.svg /usr/share/doc/haproxy-1.5.4/internals/entities.txt /usr/share/doc/haproxy-1.5.4/internals/hashing.txt /usr/share/doc/haproxy-1.5.4/internals/header-parser-speed.txt /usr/share/doc/haproxy-1.5.4/internals/header-tree.txt /usr/share/doc/haproxy-1.5.4/internals/http-cookies.txt /usr/share/doc/haproxy-1.5.4/internals/http-docs.txt /usr/share/doc/haproxy-1.5.4/internals/http-parsing.txt /usr/share/doc/haproxy-1.5.4/internals/naming.txt /usr/share/doc/haproxy-1.5.4/internals/pattern.dia /usr/share/doc/haproxy-1.5.4/internals/pattern.pdf /usr/share/doc/haproxy-1.5.4/internals/polling-states.fig /usr/share/doc/haproxy-1.5.4/internals/repartition-be-fe-fi.txt /usr/share/doc/haproxy-1.5.4/internals/sequence.fig /usr/share/doc/haproxy-1.5.4/internals/stats-v2.txt /usr/share/doc/haproxy-1.5.4/internals/stream-sock-states.fig /usr/share/doc/haproxy-1.5.4/internals/todo.cttproxy /usr/share/doc/haproxy-1.5.4/lgpl.txt /usr/share/doc/haproxy-1.5.4/proxy-protocol.txt /usr/share/doc/haproxy-1.5.4/queuing.fig /usr/share/doc/haproxy-1.5.4/tarpit.cfg /usr/share/doc/haproxy-1.5.4/url-switching.cfg /usr/share/haproxy /usr/share/haproxy/400.http /usr/share/haproxy/403.http /usr/share/haproxy/408.http /usr/share/haproxy/500.http /usr/share/haproxy/502.http /usr/share/haproxy/503.http /usr/share/haproxy/504.http /usr/share/haproxy/README /usr/share/man/man1/halog.1.gz /usr/share/man/man1/haproxy.1.gz /var/lib/haproxy package 0:1.5.4-2.el6_7.2 is not installed
开机自动启动:
chkconfig haproxy on
服务启动:
service haproxy on
[root@monitor etc]# netstat -tunlp | grep haproxy
tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN 1296/haproxy
tcp 0 0 10.169.216.172:3306 0.0.0.0:* LISTEN 1296/haproxy
udp 0 0 0.0.0.0:60642 0.0.0.0:* 1296/haproxy
日志记录:
[root@monitor etc]# cat /etc/rsyslog.d/49-haproxy.conf
# Create an additional socket in haproxy's chroot in order to allow logging via # /dev/log to chroot'ed HAProxy processes $AddUnixListenSocket /var/lib/haproxy/dev/log $ModLoad imudp $UDPServerRun 514 local3.* /var/log/haproxy.log # Send HAProxy messages to a dedicated logfile if $programname startswith 'haproxy' then /var/log/haproxy.log &~
[root@monitor etc]# cat /etc/haproxy/haproxy.cfg # 全局配置参数 global log 127.0.0.1 local0 notice user haproxy group haproxy # 一些默认参数 defaults log global retries 3 option dontlognull option redispatch maxconn 2000 timeout connect 3000 timeout server 5000 timeout client 5000 # 这个是我们定义的负载均衡的配置 listen mysql-lb1 # 绑定的IP和端口 haproxy服务器一个网卡IP bind 10.169.216.172:3306 # 模式是TCP mode tcp # 通过mysql连接去检测mysql是否可以访问 创建用户haproxy_check 密码为空,权限usage option mysql-check user haproxy_check # 负载均衡算法是 轮询 balance roundrobin # 下面两个就是后端被访问的server server mysql_1 10.24.220.70:3306 weight 1 check server mysql_2 10.169.214.33:3306 weight 1 check # 自带的监控服务器的配置 # 监控服务的端口是 8888 listen stats *:8888 # 监控模式是http mode http option httpclose balance roundrobin stats uri / stats realm Haproxy Statistics # 监控的用户名和密码 stats auth myadmin:myadmin
后台MYSQL每台执行:
# 通过mysql连接去检测mysql是否可以访问 创建用户haproxy_check 密码为空,权限usage
drop user haproxy_check@'10.169.216.172'; create user haproxy_check@'10.169.216.172'; grant usage on *.* to haproxy_check@'10.169.216.172'; set password for haproxy_check@'10.169.216.172' ='';
haproxy_check 账号测试:
root@monitor etc]# mysql -uhaproxy_check -p -h 10.169.216.172 -e "select @@hostname;" Enter password: +------------+ | @@hostname | +------------+ | slave2 | +------------+ [root@monitor etc]# mysql -uhaproxy_check -p -h 10.169.216.172 -e "select @@hostname;" Enter password: +------------+ | @@hostname | +------------+ | slave1 | +------------+ [root@monitor etc]# mysql -uhaproxy_check -p -h 10.169.216.172 -e "select @@hostname;" Enter password: +------------+ | @@hostname | +------------+ | slave2 | +------------+ [root@monitor etc]# mysql -uhaproxy_check -p -h 10.169.216.172 -e "select @@hostname;" Enter password: +------------+ | @@hostname | +------------+ | slave1 | +------------+ [root@monitor etc]# mysql -uhaproxy_check -p -h 10.169.216.172 -e "select @@hostname;" Enter password: +------------+ | @@hostname | +------------+ | slave2 | +------------+ [root@monitor etc]# mysql -uhaproxy_check -p -h 10.169.216.172 -e "select @@hostname;" Enter password: +------------+ | @@hostname | +------------+ | slave1 | +------------+
ROOT 用户测试
[root@monitor etc]# mysql -uroot -p -h 10.169.216.172 -e "select @@hostname;" Enter password: +------------+ | @@hostname | +------------+ | slave2 | +------------+ [root@monitor etc]# mysql -uroot -p -h 10.169.216.172 -e "select @@hostname;" Enter password: +------------+ | @@hostname | +------------+ | slave1 | +------------+