一、安装apache
1、安装依赖包,以下命令仅适用于centos服务器,suse服务器在运行yast2进行安装。
yum install gcc
yum install apr
yum install apr-util
yum install pcre
解压apache安装包
tar -xjf httpd-2.2.6.tar.gz
cd httpd-2.2.6/
编译
./configure --prefix=/opt/httpd
安装
make
make install
启动apache
cd /opt/httpd/bin/
./apachectl start
2、MIME设置
修改 conf/mime.types文件, 将html的内容改为:
text/html html htm do
二、集群和负载均衡配置
1、集群配置
a)将mod_jk.so 复制到/opt/httpd/modules
b)修改http.conf
vi /opt/httpd/conf/http.conf
增加以下内容:
#mod_jk
Include /opt/httpd/conf/mod_jk.conf
c)增加mod_jk.conf,并编辑以下内容
LoadModule jk_module /opt/httpd/modules/mod_jk.so
JkWorkersFile /opt/httpd/conf/workers.properties
JkShmFile /opt/httpd/logs/mod_jk.shm
JkLogFile /opt/httpd/logs/mod_jk.log
JkLogLevel debug
JkLogStampFormat "[%a%b%d%H:%M:%S%Y]"
JkMount /portal* controller
JkMount /portal* controller
JkMount /idcenter* controller
JkMount /pm* controller
JkMount /test* controller
JkMount /consume* controller
JkMount /access* controller
d)增加workers.properties,并编辑以下内容
worker.list=controller,tomcat1,tomcat2
worker.tomcat1.port=8009
worker.tomcat1.host=172.16.36.141
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1
worker.tomcat2.port=8009
worker.tomcat2.host=172.16.36.145
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=3
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2
worker.controller.sticky_session=true
e)配置每个Tomcat的server.xml
将<Engine name="Catalina" defaultHost="localhost">修改为:
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
f)测试Apache与Tomcat的关联
在每个tomcat的webapps目录下创建test目录,并创建test.jsp
test.jsp内容为
<html>
this is tomcat 1
</html>
另一个tomcat为this is tomcat 2,类推。
启动apache和tomcat
2、负载均衡配置
本次实验使用四台centos服务器,两台作为keepalived服务端,两台安装apache http作为客户端,keepalived版本为ipvsadm-1.27-7.el7.x86_64。
以下负载均衡配置以http为例,keepalived服务器还可以实现数据库等服务器的负载均衡。通过修改文件keepalived.conf中虚拟服务器定义块中的端口来实现不同服务的负载均衡,本例为80,若mysql数据库服务则改为3306。
2.1客户端配置
lvs 客户端不需安装额外的软件,只需要增加配置文件lvs_real,本例将配置文件放在目录/usr/local/bin/
a)增加配置文件,内容如下:
#!/bin/sh
#description : start realserver
VIP=106.30.130.30
. /etc/rc.d/init.d/functions
case “$1” in
start)
echo " start LVS of REALServer"
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
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
;;
stop)
/sbin/ifconfig lo:0 down
echo “close LVS Directorserver”
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 “Usage: $0 {start|stop}”
exit 1
esac
b)配置属性详解
1、vip(virtual ip)。直接路由模式的 vip 必须跟服务器对外提供服务的 ip 地址在同一个网段,并且 lvs 负载均衡器和其他所有提供相同功能的服务器都使用这个 vip.
2、vip 被绑定在环回接口 lo0:0 上,其广播地址是其本身,子网掩码是 255.255.255.255。这与标准的网络地址设置有很大的不同。采用这种可变长掩码方式把网段划分成只含一个主机地址的目的是避免 ip 地址冲突。
3、echo “1”,echo “2” 这段的作用是抑制 arp 广播。如果不做 arp 抑制,将会有众多的机器向其他宣称:“嗨!我是奥巴马,我在这里呢!”,这样就乱套了。
c)启停命令
停止命令:/usr/local/bin/lvs_real stop
启动命令:/usr/local/bin/lvs_real start
d)客户端验证
执行命令 /usr/local/bin/lvs_real start后,接着执行ip addr来检查网络的状态,有如下结果,说明lo0:0 确实绑定了我们指定的vip地址,配置成功。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet 106.30.130.30/32 brd 106.30.130.30 scope global lo:0
valid_lft forever preferred_lft forever
2.2、服务端配置
a)两台服务端分别安装keepalived:
Yum install ipvsadm
b)配置keepalived:
修改两台keepalived服务器的文件/etc/keepalived/keepalived.conf,两台keepalived的配置文件只有 MASTER/ BACKUP的区别,以下为master的配置:
#! Configuration File for keepalived
#全局定义块
global_defs {
lvs_id LVS_YKT_A //负载均衡器标识(lvs_id)在一个网络内应该是唯一的。
}
#VRRP 实例定义块
vrrp_sync_group VGYKT { //一个网络内应该是唯一的。
group {
VI_YKT }
}
vrrp_instance define
vrrp_instance VI_YKT { //vrrp_instance.实例名出自实例组group 所包含的那些名字
state MASTER //两台keepalived的配置文件只有 MASTER/ BACKUP的区别
interface eth0
lvs_sync_daemon_inteface eth0
virtual_router_id 51 //虚拟路由标识,同一个 vrrp 实例使用唯一的标识
priority 150
advert_int 5
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
106.30.130.30 //自定义虚拟ip(须同网段)
}
}
virtual machine setting
#虚拟服务器定义块
virtual_server 106.30.130.30 80 { //虚拟ip 端口号
delay_loop 6
lb_algo wlc
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 106.30.130.31 80 { //客户端IP1 端口号
weight 100
TCP_CHECK {
connect_timeout 5
nb_get_retry 3
delay_before_retry 3
connect_port 80 //端口号
}
}
real_server 106.30.130.35 80 { //客户端IP2 端口号
weight 100
TCP_CHECK {
connect_timeout 5
nb_get_retry 3
delay_before_retry 3
connect_port 80 //端口号
}
}
}