LVS负载均衡集群实现LAMP搭建wordpress

前言

之前写过一篇关于LVS的集群博客,那篇博客简单描述了一下集群的基本概念,这篇博客我将做一个更贴近于实际的集群实验。

废话就不多说了,直接进入主题。


操作

准备

8台CentOS7.3的虚拟机
1,DNS服务器:工作在172.16.0.0/16网段,一个网卡一个IP
2,CLIENT客户机:一个网卡一个IP,网段172.16.0.0/16,做访问测试用(访问测试用windows机器测试会更直观)
3,VS调度服务器:两个网卡两个IP,分别为172.16.0.0/16网段和10.0.0.0/8网段
4,ROUTE路由器:两个网卡两个IP,分别为192.168.179.0/24网段和10.0.0.0/8网段
5,RS1web服务器1:一个网卡一个IP,192.168.179.0/24网段
6,RS2web服务器2:一个网卡一个IP,192.168.179.0/24网段
7,NFS服务器:一个网卡一个IP,192.168.179.0/24网段
8,MYSQL(MARIADB)服务器:一个网卡一个IP,192.168.179.0/24网段

目前各机器IP地址如下:
1,DNS:172.16.254.193
2,CLIENT:172.16.254.194
3,VS:172.16.250.135;10.0.0.102
4,ROUTE:192.168.179.144;10.0.0.101
5,RS1:192.168.179.135
6,RS2:192.168.179.138
7,NFS:192.168.179.141
8,MYSQL:192.168.179.143

注意:所有机器防火墙和selinux均处于关闭状态,并且各网段机器必须在物理上连通(VM网络设置)

网络拓扑图


第一步,搭建DNS服务器

既然八台虚拟机都准备好了,我们就可以开始一步一步搭建服务了。为了方便识别,我把所有机器的hostname都改成了相应的名字。

[root@dns ~]# yum install bind bind-utils -y #安装相应包
[root@dns ~]# vim /etc/named.conf #更改配置文件相应两行
listen-on port 53 { localhost; };
allow-query     { 0.0.0.0/0; };
[root@dns ~]# vim /etc/named.rfc1912.zones #添加test.com域设置
zone "test.com" IN {
        type master;
        file "test.com.zone";
};
[root@dns ~]# cp /var/named/named.empty /var/named/test.com.zone #复制一份域配置文件模板
[root@dns ~]# vim /var/named/test.com.zone #如下更改
$TTL 3H
@       IN SOA  test.com. admin.test.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns
@       A       172.16.250.135
www     A       172.16.250.135
dns     A       172.16.254.193
[root@dns ~]# chgrp named /var/named/test.com.zone #更改域配置文件属组(很重要)
[root@dns ~]# systemctl start named #启动服务

到这里DNS服务器就搭建完成了。每一个步骤完成每一个服务搭建好之后都需要测试是否成功,不然到后面出了错排错非常麻烦。我这里就不把测试过程放出来了。


第二步,配置CLIENT

客户机主要是要配置DNS服务器以便访问测试的时候域名能够正常访问。

BOOTPROTO="static"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=172.16.254.194
PREFIX=16
DNS1=172.16.254.193 #指定DNS服务器为刚才搭建的DNS服务器地址
[root@client ~]# systemctl restart network #重启网络服务

第三步,配置VS,RS,ROUTE

VS配置

[root@vs ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 #配置网卡
BOOTPROTO="static" #手动设置
NAME="ens33" #连接名
DEVICE="ens33" #设备名
ONBOOT="yes" #开机启动
IPADDR=172.16.250.135 #IP地址
PREFIX=16 #子掩码
[root@vs ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens37
DEVICE=ens37
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.0.0.102
PREFIX=8
GATEWAY=10.0.0.101 #网关指向路由器
[root@vs ~]# systemctl restart network #重启网络服务

ROUTE配置

[root@route ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO="static"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=10.0.0.101
PREFIX=8
GATEWAY=10.0.0.101
[root@route ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens37
DEVICE=ens37
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.179.144
PREFIX=24
[root@route ~]# vim /etc/sysctl.conf #打开sysctl配置文件
net.ipv4.ip_forward = 1 #添加一行路由转发功能
[root@route ~]# sysctl -p #生效配置文件内容
net.ipv4.ip_forward = 1
[root@route ~]# 

RS1配置

网卡配置要看清到底是哪一个网卡,不要胡乱配置。

[root@rs1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens37
BOOTPROTO="static"
NAME="ens37"
DEVICE="ens37"
ONBOOT="yes"
IPADDR=192.168.179.135
PREFIX=24
GATEWAY=192.168.179.144 #网关指向ROUTE路由器
[root@rs1 ~]# systemctl restart network #重启服务
[root@rs1 ~]# yum install httpd php php-mysql php-gd -y #安装httpd和php
[root@rs1 ~]# systemctl start httpd #启动服务
[root@rs1 ~]# chown apache /var/www/html/ #更改属主

RS2配置

RS2的配置和RS1的配置基本相同

[root@rs2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens37
BOOTPROTO="static"
NAME="ens37"
DEVICE="ens37"
ONBOOT="yes"
IPADDR=192.168.179.138
PREFIX=24
GATEWAY=192.168.179.144
[root@rs2 ~]# systemctl restart network #重启服务
[root@rs2 ~]# yum install httpd php php-mysql php-gd -y #安装httpd和php
[root@rs2 ~]# systemctl start httpd #启动服务
[root@rs2 ~]# chown apache /var/www/html/ #更改属主

回到VS配置

[root@vs ~]# yum install ipvsadm -y #安装ipvsadm
[root@vs ~]# ipvsadm -A -t 172.16.250.135:80 -s rr #添加VS
[root@vs ~]# ipvsadm -a -t 172.16.250.135:80 -r 192.168.179.135 -m #以nat模式添加RS1
[root@vs ~]# ipvsadm -a -t 172.16.250.135:80 -r 192.168.179.138 -m #以nat模式添加RS2

这一步就算完成了


第四步,配置NFS服务器

[root@nfs ~]# yum install nfs-utils -y #安装nfs包
[root@nfs ~]# mkdir /app/html #创建放web服务的网站文件夹
[root@nfs ~]# tar -xf wordpress-4.8-zh_CN.tar.gz #解压事先准备好的wordpress包
[root@nfs ~]# mv wordpress/* /app/html/ #将内容移动到之前创建好用于共享的目录下
[root@nfs ~]# cp /app/html/wp-config-sample.php /app/html/wp-config.php #复制配置文件模板
[root@nfs ~]# vim /app/html/wp-config.php #将配置文件改成之后我要创建的数据库信息
define('DB_NAME', 'blog');
define('DB_USER', 'blog');
define('DB_PASSWORD', 'blog');
define('DB_HOST', '192.168.179.143'); #这里注意IP地址要填随后搭建的mysql服务器
[root@nfs ~]# vim /etc/exports #打开NFS配置文件
/app/html 192.168.179.0/24(rw,all_squash,anonuid=48,anongid=48) #填入以下内容
[root@nfs ~]# exportfs -r #生效配置
[root@nfs ~]# useradd -u48 -s /sbin/nologin -r apache #创建与RS1和RS2uid和用户名相同的账号,方便权限控制
[root@nfs ~]# chown -R apache /app/html #更改属主
[root@nfs ~]# systemctl start nfs #启动服务

回到RS1和RS2挂载nfs共享目录到/var/www/html

[root@rs1 ~]# vim /etc/fstab #打开磁盘挂载文件添加下面一句
192.168.179.141:/app/html /var/www/html nfs defaults 0 0
[root@rs1 ~]# yum install nfs-utils -y #安装nfs工具包,用于挂载
[root@rs1 ~]# mount -a #挂载生效

RS2

[root@rs2 ~]# vim /etc/fstab
192.168.179.141:/app/html /var/www/html nfs defaults 0 0
[root@rs2 ~]# yum install nfs-utils -y
[root@rs2 ~]# mount -a

这样nfs基本配置完毕


第五步,搭建MYSQL(MARIADB)服务器

[root@mysql ~]# yum install mariadb-server -y #安装包
[root@mysql ~]# systemctl start mariadb #启动服务
[root@mysql ~]# mysql -e "create database blog;grant all on blog.* to 'blog'@'192.168.179.%' identified by 'blog';" #创建名为blog的数据并授权给blog
[root@mysql ~]# systemctl restart mariadb #重启服务

现在基本上已经完成搭建了,可以测试一下了。


测试

因为访问的web服务程序都是来自同一个路径所以测试也根本看不出来到底是哪台机器在工作,所以只要访问VS是通畅的就算是成功了。


总结

其实搭建的难度不大,只是机器多了一些,在整个过程中一定要细心,不然很容易出错。