持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第29天,点击查看活动详情
环境准备
生产中心http apache使用两台服务器作为master和slave节点
序号 | 服务器节点 | IP地址 | 服务器操作系统 | apache 版本 |
---|---|---|---|---|
1 | http-primary-master | 192.168.4.162 | linux CentOS 6.4 64位 2核4G 50G | 2.2.4 |
2 | http-primary-slave | 192.168.4.163 | linux CentOS 6.4 64位 2核4G 50G | 2.2.4 |
生产中心http keepalived使用两台服务器作为master和slave节点
序号 | 服务器节点 | IP地址 | 服务器操作系统 | apache 版本 |
---|---|---|---|---|
1 | keepalived-primary-master | 192.168.4.162 | linux CentOS 6.4 64位 2核4G 50G | 2.0.6 |
2 | keepalived-primary-slave | 192.168.4.163 | linux CentOS 6.4 64位 2核4G 50G | 2.0.6 |
在上一篇文章,我们已经谈到了http master主节点安装apache和keepalived的过程。
那今天我们就来谈谈http slave从节点装apache和keepalived的过程。
安装大致差不多,就是一些配置文件的不一样。
篇幅有点长,大家伙耐心点看吧!!!
二、生产中心http slave安装及配置
2.1、安装http-primary-slave节点
上传httpd-2.2.34.tar.gz到/opt/tools目录下并进行解压
# cd /opt/tools/
# tar -zxvf httpd-2.2.34.tar.gz
编译安装
# cd httpd-2.2.34
# ./configure --prefix=/usr/local/apache2 --enable-module=so --enable-rule=SHARED_CORE --enable-so --enable-rewrite
如果编译的时候出现以上错误,安装GCC软件套件,执行下面命令:
# yum -y install gcc
重新编译
# ./configure --prefix=/usr/local/apache2 --enable-module=so --enable-rule=SHARED_CORE --enable-so --enable-rewrite
# make
# make install
至此 apache已经安装完
启动Apache服务:
# /usr/local/apache2/bin/apachectl start
如果启动apache启动报错如下:
httpd: Could not reliably determine the server's fully qualified domain name, using 192.168.4.163 for ServerName
需要修改apache ServerName,步骤如下
# vi /usr/local/apache2/conf/httpd.conf
搜索"#ServerName",修改ServerName 为 192.168.4.163:80
修改为
再重新启动apache 即可
# /usr/local/apache2/bin/apachectl start
2.2、配置防火墙
启动80端口
# vi /etc/sysconfig/iptables
添加以下内容:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -i eth0 -p 112 -j ACCEPT
注意,80是HTTP端口,112是keepalived通讯端口,112端口必须要这样写
重启防火墙
# service iptables restart
2.3、安装tomcat通信模块
# cd /opt/tools/httpd-2.2.34/modules/proxy
# /usr/local/apache2/bin/apxs -c -i mod_proxy.c proxy_util.c
2.4、安装proxy_ajp模块
# cd /opt/tools/httpd-2.2.34/modules/proxy
# /usr/local/apache2/bin/apxs -c -i mod_proxy_ajp.c ajp_header.c ajp_utils.c ajp_msg.c ajp_link.c
# /usr/local/apache2/bin/apxs -i -c -a mod_proxy_http.c
# /usr/local/apache2/bin/apxs -i -c -a mod_proxy_connect.c
# /usr/local/apache2/bin/apxs -i -c -a mod_proxy_balancer.c
2.5、加载模块配置
# vi /usr/local/apache2/conf/httpd.conf
搜索"# LoadModule foo_module modules/mod_foo.so"
把以上三个LoadModule替换为以下五个LoadModule,注意顺序,否则启动会报错:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
apache停止命令:
# /usr/local/apache2/bin/apachectl stop
apache启动命令:
# /usr/local/apache2/bin/apachectl start
查看apache启动情况:
# netstat -anp | grep :80
经过以上步骤安装部署,可以通过浏览器正常访问到服务器80端口,http服务器安装完成。
2.6、参数调优及应用配置
2.6.1、主配置文件配置
# vi /usr/local/apache2/conf/httpd.conf
将虚拟主机配置文件路径与性能配置模块路径路径前面#号注释去掉,生效配置文件,配置如图所示:
2.6.2、高性能配置
配置MPM
在apace安装目录/conf/extra目录编辑个名为httpd-mpm.conf的配置文件,执行脚本如下:
# vi /usr/local/apache2/conf/extra/httpd-mpm.conf
在默认情况下,apache的MPM模块配置文件并没有启用
此时,我们就需要根据当前Apache服务器所使用的MPM模块,来修改对应<IfModule>
节点下的参数配置,配置情况如下:
<IfModule mpm_prefork_module>
StartServers 30
MinSpareServers 30
MaxSpareServers 90
ServerLimit 5500
MaxClients 5000
MaxRequestsPerChild 50000
</IfModule>
对应的配置参数作用如下:
startServers:启动Apache时创建的子进程数。
MinSpareServers:处于空闲状态的最小子进程数。
MaxSpareServers:处于空闲状态的最大子进程数。
MinSpareThreads:处于空闲状态的最小线程数。
MaxClients:允许同时连接的最大请求数量
MaxRequestsPerChild:每个子进程允许处理的请求总数
2.6.3、站点应用配置
# vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
把两个example的配置注释掉,在文件末尾添加以下内容:
<VirtualHost *:80>
DocumentRoot "/usr/local/apache2/htdocs"
ServerName 192.168.4.163
ErrorLog "logs/http-primary-slave-error_log"
CustomLog "logs/http-primary-slave-access_log" common
</VirtualHost>
如图:
重启apache令配置生效:
# /usr/local/apache2/bin/apachectl restart
修改默认页
# vi /usr/local/apache2/htdocs/index.html
修改为以下内容:
<html><body><h1>This is http-primary-slave!</h1></body></html>
浏览访问查看效果:
2.7、安装keepalived
上传keepalived-2.0.6.tar.gz到/opt/tools目录下并进行解压
# cd /opt/tools/
# tar -zxvf keepalived-2.0.6.tar.gz
# cd keepalived-2.0.6
# ./configure --prefix=/usr/local/keepalived
如果出现以上错误,执行以下命令安装openssl
# yum -y install openssl-devel
安装完opendssl后,重新安装keepalived
# ./configure --prefix=/usr/local/keepalived
# make
# make install
2.8、将 keepalived 安装成 Linux 系统服务
因为没有使用 keepalived 的默认路径安装(默认是/usr/local),安装完成之后,需要做一些工作复制默认配置文件到默认路径
# mkdir /etc/keepalived
复制 keepalived 服务脚本到默认的地址
# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
# cp /opt/tools/keepalived-2.0.6/keepalived/etc/init.d/keepalived /etc/init.d/
# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
# ln -s /usr/local/sbin/keepalived /usr/sbin/
# ln -s /usr/local/keepalived/sbin/keepalived /sbin/
设置 keepalived 服务开机启动
# chkconfig keepalived on
2.9、修改 Keepalived 配置文件
BACKUP 节点配置文件(192.168.4.163)
首先先备份keepalived配置文件
# mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
创建新的配置文件
# vi /etc/keepalived/keepalived.conf
添加以下内容:
global_defs {
router_id http-primary-slave
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 166
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.4.166
}
}
virtual_server 192.168.4.166 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 0
protocol TCP
real_server 192.168.4.162 80 {
weight 1
TCP_CHECK {
connect_timeout 10
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.4.163 80 {
weight 1
TCP_CHECK {
connect_timeout 10
delay_before_retry 3
connect_port 80
}
}
}
完成以上步骤,backup节点的keepalived已经安装配置完成,可以开启keepalieved服务
2.10、编辑realserver脚本文件
# vi /etc/init.d/realserver
添加以下内容:
SNS_VIP=192.168.4.166
/etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
/sbin/route add -host $SNS_VIP dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $SNS_VIP >/dev/null 2>&1
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
保存脚本文件后更改该文件权限:
# chmod 755 /etc/init.d/realserver
开启realserver服务:
# service realserver start
设置开机自动启动realserver服务:
# vi /etc/rc.local
在末尾添加以下内容:
service realserver start
(注意:这个realserver步骤一定要做,否则keepalived无法实现负载均衡)
2.11、启动keepalived
# service keepalived start
因为BACKUP节点不创建VIP,要查看是否成功创建VIP,停掉MASTER节点的KEEPALIVED就可以查看:
# ip a
可以看到VIP已经创建成功
2.12、 Keepalived日志
默认日志存放在系统日志:/var/log/messages下,把日志单独存放
修改/etc/sysconfig/keepalived
# vi /etc/sysconfig/keepalived
把KEEPALIVED_OPTIONS="-D" 修改为:KEEPALIVED_OPTIONS="-D -d -S 0"
然后修改rsyslog.conf
# vi /etc/rsyslog.conf
文件末尾添加:
local0.* /var/log/keepalived.log
重启日志记录服务
# /etc/init.d/rsyslog restart
重启keepalived
# /etc/init.d/keepalived restart
查看日志
# tail -f /var/log/keepalived.log
三、验证性测试
3.1、指定请求的均衡转发
因为两个Web服务器的权重都一样,所以会依次转发给两个Web服务器
浏览器访问http://192.168.4.166
好了,以上就是http slave从节点安装apache和keepalived的过程了。
篇幅有点长,大家伙耐心点看!!!
好了,今天就先到这里了!!!^_^
个人理解,可能也不够全面,班门弄斧了。
如果觉得有收获的,帮忙点赞、评论、收藏
一下呗!!!