环境:centos 6.8
注:此处省略对于各服务器的IP配置。
一:图示讲解
用户访问vip,通过haproxy代理得到服务器的资源。此架构下基于keepalived对haproxy做负载均衡(此种两种软件装在同一台服务器),基于haproxy对Nginx和apache做负载均衡,Nginx和Apache使用共享存储NFS和mysql。
二:配置讲解
第一步:配置mysql和nfs
# 配置Mysql服务 [root@mysql-nfs ~]$ yum -y install mariadb-server [root@mysql-nfs ~]$ systemctl start mariadb [root@mysql-nfs ~]$ mysql MariaDB [(none)]> CREATE DATABASE wpdb; MariaDB [(none)]> GRANT ALL ON wpdb.* TO wpuser@'192.168.%.%' IDENTIFIED BY 'wppass'; MariaDB [(none)]> # 配置NFS服务 [root@mysql-nfs ~]$ useradd -r -u 88 apache [root@mysql-nfs ~]$ mkdir -p -v /data/www [root@mysql-nfs ~]$ chown apache.apache /data/www [root@mysql-nfs ~]$ yum -y install nfs-utils [root@mysql-nfs ~]$ cat > /etc/exports.d/web_data.exports << EOF /data/www/ 192.168.37.0/16(rw,all_squash,anonuid=88,anongid=88) EOF [root@mysql-nfs ~]$ systemctl start rpcbind [root@mysql-nfs ~]$ systemctl start rpcidmapd [root@mysql-nfs ~]$ systemctl start nfs # 测试NFS服务 [root@mysql-nfs ~]$ showmount -e 127.0.0.1 Export list for 127.0.0.1: /data/www 192.168.37.0/16
第二步:配置Nginx和apache
# 配置apache1服务器 [root@lap1 ~]$ useradd -r -u 88 apache [root@lap1 ~]$ yum -y install nfs-utils httpd php php-mysql [root@lap1 ~]$ mount -t nfs 192.168.37.144:/data/www /var/www/html/ [root@lap1 ~]$ wget https://cn.wordpress.org/wordpress-4.7.4-zh_CN.zip [root@lap1 ~]$unzip wordpress-4.7.4-zh_CN.zip [root@lap1 ~]$cp wordpress/ /var/www/html [root@lap1 ~]$ service httpd restart [root@lap2 ~]$ ls /var/www/html/ wordpress # 配置apache2服务器 [root@lap1 ~]$ useradd -r -u 88 apache [root@lap1 ~]$ yum -y install nfs-utils httpd php php-mysql [root@lap1 ~]$ mount -t nfs 192.168.37.144:/data/www /var/www/html/ [root@lap1 ~]$ service httpd restart [root@lap1 ~]$ ls /var/www/html/ wordpress
# 配置Nginx1服务器 [root@nginx1 ~]$ yum -y install nfs-utils nginx [root@nginx1 ~]$ mount -t nfs 192.168.37.144:/data/www /usr/share/nginx/html/ [root@nginx1 ~]$ service httpd restart [root@nginx1 ~]$ ls /usr/share/nginx/html/ wordpress # 配置Nginx2服务器 [root@nginx1 ~]$ yum -y install nfs-utils nginx [root@nginx1 ~]$ mount -t nfs 192.168.37.144:/data/www /usr/share/nginx/html/ [root@nginx1 ~]$ service httpd restart [root@nginx1 ~]$ ls /usr/share/nginx/html/ wordpress
第三步:配置Keepalived和Haproxy
# 配置HAproxy1服务器 ## 安装相关程序包 [root@haproxy1 ~]$ yum -y install haproxy keepalived psmisc ## 为haproxy提供配置文件 [root@haproxy1 ~]$ cp /etc/haproxy/haproxy.cfg{,.bak} [root@haproxy1 ~]$ cat > /etc/haproxy/haproxy.cfg << EOF global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon 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 frontend Test *:80 stats enable stats uri /stats acl url_static path_end -i .jpg .gif .png .css .js .svg rspidel Server.* rspadd Server:\ CNC use_backend web if url_static default_backend php backend php balance roundrobin server ap1 192.168.37.138:80 check server ap1 192.168.37.129:80 check backend web balance roundrobin server nginx1 192.168.37.135:80 check server nginx2 192.168.37.134:80 check EOF ## 为keepalived提供配置文件 [root@haproxy1 ~]$ cp /etc/keepalived/keepalived.conf{,.bak} [root@haproxy1 ~]$ cat > /etc/keepalived/keepalived.conf << EOF ! Configuration File for keepalived global_defs { router_id haproxy1 vrrp_mcast_group4 224.0.128.100 } vrrp_script check_haproxy { script "killall -0 haproxy && exit 0 || exit 1" interval 1 weigth -5 } vrrp_script check_down { script "[ -f /etc/keepalived/down ] && exit 1 || exit 0" interval 1 weigth -5 } vrrp_instance Haproxy_VIP { state MASTER interface eth1 virtual_router_id 66 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 11111 } virtual_ipaddress { 172.18.32.232/16 dev eth1 label eth1:1 } track_script { check_haproxy check_down } } EOF ## 启动haproxy、keepalived服务 [root@haproxy1 ~]$ systemctl start haproxy [root@haproxy1 ~]$ systemctl start keepalived
# 配置HAproxy2服务器 ## 安装相关程序包 [root@haproxy1 ~]$ yum -y install haproxy keepalived psmisc ## 为haproxy提供配置文件 [root@haproxy1 ~]$ cp /etc/haproxy/haproxy.cfg{,.bak} [root@haproxy1 ~]$ cat > /etc/haproxy/haproxy.cfg << EOF global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon 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 frontend Test *:80 stats enable stats uri /stats acl url_static path_end -i .jpg .gif .png .css .js .svg rspidel Server.* rspadd Server:\ CNC use_backend web if url_static default_backend php backend php balance roundrobin server ap1 192.168.37.138:80 check server ap1 192.168.37.129:80 check backend web balance roundrobin server nginx1 192.168.37.135:80 check server nginx2 192.168.37.134:80 check EOF ## 为keepalived提供配置文件 [root@haproxy1 ~]$ cp /etc/keepalived/keepalived.conf{,.bak} [root@haproxy1 ~]$ cat > /etc/keepalived/keepalived.conf << EOF ! Configuration File for keepalived global_defs { router_id haproxy1 vrrp_mcast_group4 224.0.128.100 } vrrp_script check_haproxy { script "killall -0 haproxy && exit 0 || exit 1" interval 1 weigth -5 } vrrp_script check_down { script "[ -f /etc/keepalived/down ] && exit 1 || exit 0" interval 1 weigth -5 } vrrp_instance Haproxy_VIP { state BACKUP interface eth1 virtual_router_id 66 priority 95 advert_int 1 authentication { auth_type PASS auth_pass 11111 } virtual_ipaddress { 172.18.32.232/16 dev eth1 label eth1:1 } track_script { check_haproxy check_down } } EOF ## 启动haproxy、keepalived服务 [root@haproxy1 ~]$ systemctl start haproxy [root@haproxy1 ~]$ systemctl start keepalived
三.测试访问
在浏览器访问http://172.18.32.232/wordpress 正常
四.此实验需要注意的地方
1. 配置wordpress时,数据库地址要填mysql服务器地址192.168.37.139
2. 配置wordpress时,要在nfs服务器上切换到apache用户创建在/data/www/目录下创建wp-config.php文件。
ps: 如果大家在实验过程中有任何问题,欢迎随时联系我。VX:504498722
原创文章,作者:cnc,如若转载,请注明出处:http://www.178linux.com/76160