http服务器负载均衡安装部署(apache+keepalived)(二)

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第29天,点击查看活动详情


环境准备

生产中心http apache使用两台服务器作为masterslave节点

序号 服务器节点 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

image.png 如果编译的时候出现以上错误,安装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

image.png

修改为

image.png

再重新启动apache 即可

# /usr/local/apache2/bin/apachectl start 

image.png

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

image.png

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

  image.png

# /usr/local/apache2/bin/apxs -i -c -a mod_proxy_http.c 

image.png

# /usr/local/apache2/bin/apxs -i -c -a mod_proxy_connect.c

image.png

# /usr/local/apache2/bin/apxs -i -c -a mod_proxy_balancer.c

image.png

2.5、加载模块配置

# vi /usr/local/apache2/conf/httpd.conf

搜索"# LoadModule foo_module modules/mod_foo.so"

image.png

把以上三个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

image.png

apache停止命令:

# /usr/local/apache2/bin/apachectl stop

apache启动命令:

# /usr/local/apache2/bin/apachectl start

查看apache启动情况:

# netstat -anp | grep :80

image.png

经过以上步骤安装部署,可以通过浏览器正常访问到服务器80端口,http服务器安装完成。

image.png

2.6、参数调优及应用配置

2.6.1、主配置文件配置

# vi /usr/local/apache2/conf/httpd.conf

将虚拟主机配置文件路径与性能配置模块路径路径前面#号注释去掉,生效配置文件,配置如图所示:

image.png

2.6.2、高性能配置

配置MPM

在apace安装目录/conf/extra目录编辑个名为httpd-mpm.conf的配置文件,执行脚本如下:

# vi /usr/local/apache2/conf/extra/httpd-mpm.conf

在默认情况下,apache的MPM模块配置文件并没有启用

image.png

此时,我们就需要根据当前Apache服务器所使用的MPM模块,来修改对应<IfModule>节点下的参数配置,配置情况如下:

<IfModule mpm_prefork_module>
    StartServers          30
    MinSpareServers       30
    MaxSpareServers       90
    ServerLimit           5500
    MaxClients            5000
    MaxRequestsPerChild   50000
</IfModule>

image.png

对应的配置参数作用如下:

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>

如图:

image.png

重启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>

浏览访问查看效果:

image.png

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

image.png

如果出现以上错误,执行以下命令安装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

image.png

因为BACKUP节点不创建VIP,要查看是否成功创建VIP,停掉MASTER节点的KEEPALIVED就可以查看:

# ip a

image.png

可以看到VIP已经创建成功

2.12、 Keepalived日志

默认日志存放在系统日志:/var/log/messages下,把日志单独存放

修改/etc/sysconfig/keepalived

# vi /etc/sysconfig/keepalived

把KEEPALIVED_OPTIONS="-D" 修改为:KEEPALIVED_OPTIONS="-D -d -S 0"

image.png

然后修改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的过程了。

篇幅有点长,大家伙耐心点看!!!

好了,今天就先到这里了!!!^_^

个人理解,可能也不够全面,班门弄斧了。

如果觉得有收获的,帮忙点赞、评论、收藏一下呗!!!

image.png

猜你喜欢

转载自juejin.im/post/7112059563469176869