一、Web应用集群部署(Tomcat)
分别在两个应用节点进行如下操作:
1、首先确定tomcat服务是否已停止,没有停止则先停止:
/usr/local/tomcat/bin/shutdown.sh
2、将应用war包拷贝到tomcat的webapps目录,然后启动tomcat:
/usr/local/tomcat/bin/start.sh
3、修改数据库连接
cd /usr/local/tomcat/webapps/$projectname/WEB-INF/classes/config
vi jdbc.cproperties
修改mysql服务器ip为上一篇中设置的mysql集群的虚拟ip,并确定数据库登录的用户名和密码无误。
4、重启tomcat。
假设服务器ip如下:
NFS Server:10.0.12.133
NFS Client1:10.0.12.134
NFS Client2:10.0.12.136
登录到10.0.12.133创建共享存储目录
mkdir -p /home/nfs/share
登录到10.0.12.134,挂载NFS的共享目录
mout -t nfs 10.0.12.133:/home/nfs/share /home/nfs/share
echo "10.0.12.133:/home/nfs/share /home/nfs/share nfs defaults 0 0" >> /etc/fstab
登录到10.0.12.136,挂载NFS的共享目录
mout -t nfs 10.0.12.133:/home/nfs/share /home/nfs/share
echo "10.0.12.133:/home/nfs/share /home/nfs/share nfs defaults 0 0" >> /etc/fstab
三、负载均衡配置(haproxy)
假设:
haproxy server:10.0.12.135
backend server1:10.0.12.134
backend server2:10.0.12.134
以下操作在haproxy server执行
1、关闭SElinux
vim /etc/seliux/config
--------begin------
##修改SELINUX的值
SELINUX=disabled
--------end--------
执行如下命令即刻生效
setenforce 0
2、配置防火墙
须预先将centos7的默认防火墙关闭,安装iptables,才有以下文件
vim /etc/sysconfig/iptales
-----begin-----
:RH-Firewalld-1-INPUT [0:0]
-A RH-Firewall-1-INPUT -d 224.0.0.18 -j ACCEPT
-A RH-Firewall-1-INPUT -p vrrp -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-----end-------
重启iptables
systemctl restart iptables.service
3、安装haproxy
yum install haproxy
4、配置haproxy
vi /etc/haproxy/haproxy.cfg
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
log 127.0.0.1 local2 ###[err warning info debug]
chroot /etc/haproxy
pidfile /var/run/haproxy.pid ###haproxy的pid存放路径,启动进程的用户必须有权限访问此文件
maxconn 4000 ###最大连接数,默认4000
user haproxy
group haproxy
daemon ###创建1个进程进入deamon模式运行。此参数要求将运行模式设置为"daemon"
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
mode http ###默认的模式,tcp是4层,http是7层,health只会返回OK 若是混合模式则 mode 不需要设置
log global ###采用全局定义的日志
option dontlognull ###不记录健康检查的日志信息
option httpclose ###每次请求完毕后主动关闭http通道
option httplog ###日志类别http日志格式 混合模式 此处还需要加上 tcplog
#option forwardfor ###如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip
option redispatch ###serverId对应的服务器挂掉后,强制定向到其他健康的服务器
timeout connect 10s #default 10 second timeout if a backend is not found
timeout client 10s ###客户端连接超时
timeout server 10s ###服务器连接超时
maxconn 60000 ###最大连接数
retries 3 ###3次连接失败就认为服务不可用,也可以通过后面设置
########统计页面配置########
listen admin_stats
# 监听端口
bind 0.0.0.0:8089
# 启用状态监控
stats enable
mode http
log global
# 统计页面URL
stats uri /stats
# 统计页面密码框上提示文本
stats realm Haproxy\ Statistics
# 统计页面用户名和密码设置
stats auth admin:admin
# 隐藏统计页面上HAProxy的版本信息
#stats hide-version
#当通过认证才可管理
stats admin if TRUE
#统计页面自动刷新时间
stats refresh 30s
########WEB配置#################
listen web1080
bind 0.0.0.0:1080
mode http
option httplog
log global
maxconn 3000
balance leastconn
server web134 10.0.12.134:8007 weight 1 rise 2 fall 3
server web136 10.0.12.136:8007 weight 1 rise 2 fall 3
5、启动haproxy
systemctl start haproxy
chkconfig haproxy on
6、测试
1)分别登录到10.0.12.134,10.0.12.136,执行
python -m SimpleHTTPServer 8007
2)从其他机器多次执行如下语句
curl http://10.0.12.135:1080
3)在10.0.12.134,10.0.12.136观察请求记录,可查看到,请求被转发到不同机器。
分别在两个应用节点进行如下操作:
1、首先确定tomcat服务是否已停止,没有停止则先停止:
/usr/local/tomcat/bin/shutdown.sh
2、将应用war包拷贝到tomcat的webapps目录,然后启动tomcat:
/usr/local/tomcat/bin/start.sh
3、修改数据库连接
cd /usr/local/tomcat/webapps/$projectname/WEB-INF/classes/config
vi jdbc.cproperties
修改mysql服务器ip为上一篇中设置的mysql集群的虚拟ip,并确定数据库登录的用户名和密码无误。
4、重启tomcat。
假设服务器ip如下:
NFS Server:10.0.12.133
NFS Client1:10.0.12.134
NFS Client2:10.0.12.136
登录到10.0.12.133创建共享存储目录
mkdir -p /home/nfs/share
登录到10.0.12.134,挂载NFS的共享目录
mout -t nfs 10.0.12.133:/home/nfs/share /home/nfs/share
echo "10.0.12.133:/home/nfs/share /home/nfs/share nfs defaults 0 0" >> /etc/fstab
登录到10.0.12.136,挂载NFS的共享目录
mout -t nfs 10.0.12.133:/home/nfs/share /home/nfs/share
echo "10.0.12.133:/home/nfs/share /home/nfs/share nfs defaults 0 0" >> /etc/fstab
三、负载均衡配置(haproxy)
假设:
haproxy server:10.0.12.135
backend server1:10.0.12.134
backend server2:10.0.12.134
以下操作在haproxy server执行
1、关闭SElinux
vim /etc/seliux/config
--------begin------
##修改SELINUX的值
SELINUX=disabled
--------end--------
执行如下命令即刻生效
setenforce 0
2、配置防火墙
须预先将centos7的默认防火墙关闭,安装iptables,才有以下文件
vim /etc/sysconfig/iptales
-----begin-----
:RH-Firewalld-1-INPUT [0:0]
-A RH-Firewall-1-INPUT -d 224.0.0.18 -j ACCEPT
-A RH-Firewall-1-INPUT -p vrrp -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-----end-------
重启iptables
systemctl restart iptables.service
3、安装haproxy
yum install haproxy
4、配置haproxy
vi /etc/haproxy/haproxy.cfg
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
log 127.0.0.1 local2 ###[err warning info debug]
chroot /etc/haproxy
pidfile /var/run/haproxy.pid ###haproxy的pid存放路径,启动进程的用户必须有权限访问此文件
maxconn 4000 ###最大连接数,默认4000
user haproxy
group haproxy
daemon ###创建1个进程进入deamon模式运行。此参数要求将运行模式设置为"daemon"
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
mode http ###默认的模式,tcp是4层,http是7层,health只会返回OK 若是混合模式则 mode 不需要设置
log global ###采用全局定义的日志
option dontlognull ###不记录健康检查的日志信息
option httpclose ###每次请求完毕后主动关闭http通道
option httplog ###日志类别http日志格式 混合模式 此处还需要加上 tcplog
#option forwardfor ###如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip
option redispatch ###serverId对应的服务器挂掉后,强制定向到其他健康的服务器
timeout connect 10s #default 10 second timeout if a backend is not found
timeout client 10s ###客户端连接超时
timeout server 10s ###服务器连接超时
maxconn 60000 ###最大连接数
retries 3 ###3次连接失败就认为服务不可用,也可以通过后面设置
########统计页面配置########
listen admin_stats
# 监听端口
bind 0.0.0.0:8089
# 启用状态监控
stats enable
mode http
log global
# 统计页面URL
stats uri /stats
# 统计页面密码框上提示文本
stats realm Haproxy\ Statistics
# 统计页面用户名和密码设置
stats auth admin:admin
# 隐藏统计页面上HAProxy的版本信息
#stats hide-version
#当通过认证才可管理
stats admin if TRUE
#统计页面自动刷新时间
stats refresh 30s
########WEB配置#################
listen web1080
bind 0.0.0.0:1080
mode http
option httplog
log global
maxconn 3000
balance leastconn
server web134 10.0.12.134:8007 weight 1 rise 2 fall 3
server web136 10.0.12.136:8007 weight 1 rise 2 fall 3
5、启动haproxy
systemctl start haproxy
chkconfig haproxy on
6、测试
1)分别登录到10.0.12.134,10.0.12.136,执行
python -m SimpleHTTPServer 8007
2)从其他机器多次执行如下语句
curl http://10.0.12.135:1080
3)在10.0.12.134,10.0.12.136观察请求记录,可查看到,请求被转发到不同机器。