环境准备
生产中心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安装及配置
1.1、安装http-primary-master节点
上传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.162 for ServerName
需要修改apache ServerName,步骤如下
# vi /usr/local/apache2/conf/httpd.conf
搜索"#ServerName",修改ServerName 为 192.168.4.162:80
修改为
再重新启动apache 即可
# /usr/local/apache2/bin/apachectl start
1.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
1.3、安装tomcat通信模块
# cd /opt/tools/httpd-2.2.34/modules/proxy
# /usr/local/apache2/bin/apxs -c -i mod_proxy.c proxy_util.c
1.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
1.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服务器安装完成。
1.6、参数调优及应用配置
1.6.1、主配置文件配置
# vi /usr/local/apache2/conf/httpd.conf
将虚拟主机配置文件路径与性能配置模块路径路径前面#号注释去掉,生效配置文件,配置如图所示:
1.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:每个子进程允许处理的请求总数
1.6.3、站点应用配置
# vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
把两个example的配置注释掉,在文件末尾添加以下内容:
<VirtualHost *:80>
DocumentRoot "/usr/local/apache2/htdocs"
ServerName 192.168.4.162
ErrorLog "logs/http-primary-master-error_log"
CustomLog "logs/http-primary-master-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-master!</h1></body></html>
浏览访问查看效果:
1.7、apache命令
重启apache:
# /usr/local/apache2/bin/apachectl restart
启动apache:
# /usr/local/apache2/bin/apachectl start
停止apache:
# /usr/local/apache2/bin/apachectl stop
1.8、安装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
1.9、将 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
1.10、修改 Keepalived 配置文件
MASTER 节点配置文件(192.168.4.162)
首先先备份keepalived配置文件
# mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
创建新的配置文件
# vi /etc/keepalived/keepalived.conf
添加以下内容:
global_defs {
router_id http-primary-master
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 166
priority 100
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
}
}
}
以下是配置文件的说明
global_defs {
router_id http-primary-master # 设置lvs的id,在一个网络内应该是唯一的,标识本节点的字条串,通常为 hostname
}
vrrp_instance VI_1 {
state MASTER #指定Keepalived的角色,MASTER为主,BACKUP为备
interface eth0 #指定Keepalived的角色,MASTER为主,BACKUP为备
virtual_router_id 166 #虚拟路由编号,主备要一致
priority 100 #定义优先级,数字越大,优先级越高,主DR必须大于备用DR
advert_int 1 #检查间隔,默认为1s
# 设置验证信息,两个节点必须一致
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.4.166 #定义虚拟IP(VIP),可多设,每行一个
}
}
# 定义对外提供服务的LVS的VIP以及port
virtual_server 192.168.4.166 80 {
delay_loop 6 # 设置健康检查时间,单位是秒
lb_algo wrr # 设置负载调度的算法为wlc
lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式
nat_mask 255.255.255.0
persistence_timeout 0
protocol TCP
real_server 192.168.4.162 80 { # 指定real server1的IP地址
weight 1 # 配置节点权值,数字越大权重越高
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.4.163 80 { # 指定real server2的IP地址
weight 1 # 配置节点权值,数字越大权重越高
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
完成以上步骤,master节点的keepalived已经安装配置完成,可以开启keepalieved服务
1.11、编辑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无法实现负载均衡)
1.12、启动keepalived
# service keepalived start
查看是否成功创建VIP
# ip a
可以看到VIP已经创建成功
1.13、 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
好了,以上就是http master主节点安装apache和keepalived的过程了。
篇幅有点长,大家伙耐心点看!!!
http slave从节点,安装大致差不多,可能就是一些配置文件的不一样,那就留着下次分享了。
好了,今天就先到这里了!!!^_^
个人理解,可能也不够全面,班门弄斧了。
作者:llsydn
链接:https://juejin.cn/post/7111698327111991333
本文暂时没有评论,来添加一个吧(●'◡'●)