实验规划:
主机名 | IP地址 | 角色 |
node01 | 192.168.112.128 | web01 |
node02 | 192.168.112.129 | web02 |
node03 | 192.168.112.130 | haproxy |
操作系统信息:
[root@node03 ~]# cat /etc/redhat-release CentOS release 6.6 (Final) [root@node03 ~]# uname -a Linux node03 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux [root@node03 ~]#
安装haproxy:
[root@node03 ~]# yum -y install haproxy nginx php
安装nginx php:
[root@node01 ~]# yum -y install nginx [root@node02 ~]# yum -y install nginx
node01和node02上nginx配置文件:
user nginx; worker_processes 4; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } }
node03上haproxy和nginx配置文件
haproxy:
global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon # turn on stats unix socket stats socket /var/lib/haproxy/stats defaults mode http log global option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000 listen s-monitor *:90 mode http stats enable stats refresh 5s stats realm New0ldName stats uri / stats auth user:123456 frontend main *:80 acl url_static path_beg -i /static /p_w_picpaths /javascript /stylesheets acl url_static path_end -i .jpg .gif .png .css .js use_backend static if url_static default_backend app backend static balance roundrobin server static 127.0.0.1:8080 check backend app balance roundrobin server app1 192.168.112.128:80 check server app2 192.168.112.129:80 check
nginx配置文件:
user nginx; worker_processes 4; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; user nginx; worker_processes 4; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 8080; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; root /data/website/app; location / { #root html; index index.php index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
haproxy平滑重启操作:
(1)如果是编译安装
[root@node03 ~]#/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.conf -sf `cat /usr/local/haproxy/var/run/haproxy.pid`
或者
[root@node03 ~]#/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.conf -st `cat /usr/local/haproxy/var/run/haproxy.pid`
(2)如果是yum安装
[root@node03 ~]# /etc/init.d/haproxy reload
开启日志记录:
编辑/etc/rsyslog.conf和/etc/sysconfig/syslog文件
[root@~]# vim /etc/rsyslog.conf: 13 $ModLoad imudp #将注释去除 14 $UDPServerRun 514 #将注释去除 local3.* /var/log/haproxy.log #最下方添加 local0.* /var/log/haproxy.log #最下方添加 [root@~]#vi /etc/sysconfig/syslog ####################################### 把SYSLOGD_OPTIONS="-m 0" 改成 SYSLOGD_OPTIONS="-r -m 0" #######################################
相关解释说明:
-r:打开接受外来日志消息的功能,其监控514 UDP端口; -x:关闭自动解析对方日志服务器的FQDN信息,这能避免DNS不完整所带来的麻烦; -m:修改syslog的内部mark消息写入间隔时间(0为关闭),例如240为每隔240分钟写入一次"--MARK--"信息; -h:默认情况下,syslog不会发送从远端接受过来的消息到其他主机,而使用该选项,则把该开关打开,所有 接受到的信息都可根据syslog.conf中定义的@主机转发过去
重启rsyslog服务
[root@~]# systemctl restart rsyslog.service