lvs负载集群实验(实现wordpress)

lvs负载集群实验(实现wordpress)

项目要求:

(1) lvs 调度两台 nginx+php-fpmreal-server,采用 dr 模型,调度算法为 rr

(2) mariadb real-server 提供数据库,nfs 挂载至 2 real-server 提供文件服务

(3) 由于实验环境地址冲突将VIP替换为172.18.60.60

实施步骤:

一、配置NFS+mariadb-server

1、使用yum安装相关软件

[root@localhost
~]# yum install -y nfs-utils rpcbind mysql-server nginx

2、启动数据库,配置数据库,创建数据库和授权用户,并退出

[root@localhost
~]# service start mysqld

[root@localhost
~]# mysql

mysql>
create database wpdb;

Query
OK, 1 row affected (0.00 sec)

mysql>
grant all on wpdb.* to ‘wpuser’@’172.18.%’ identified by ‘wppass’;

Query
OK, 0 rows affected (0.00 sec)

mysql>
exit

Bye

3、创建data目录,下载wordpress安装包并解压,并且赋予wordpress文件夹属主属组

[root@localhost
~]# mkdir /data/

[root@localhost
~]# cd /data/

wget
ftp://172.18.0.1/pub/Sources/sources/httpd/wordpress-4.3.1-zh_CN.zip

[root@localhost
~]#unzip wordpress-4.3.1-zh_CN.zip

[root@localhost
data]# chown -R nginx.nginx /data/wordpress

[root@localhost
data]# ll

drwxr-xr-x
5 nginx nginx    4096 Sep 16  2015 wordpress

-rw-r–r–
1 root  root  7518362 May 
9 20:59 wordpress-4.3.1-zh_CN.zip

4、设置文件夹共享

[root@localhost
data]# vim /etc/exports

/data/wordpress
172.18.10.1[01](rw)

 

5、启动nfs服务,注意,必须优先启动rpcbind服务,才能成功启动nfs服务,不然报错。

[root@localhost
data]# service rpcbind start

Starting
rpcbind:                                         
[  OK  ]

[root@localhost
data]# service nfs start

Starting
NFS services:                                     [  OK  ]

Starting
NFS quotas:                                       [  OK  ]

Starting
NFS mountd:                                       [  OK  ]

Starting
NFS daemon:                                       [  OK  ]

Starting
RPC idmapd:                                       [  OK  ]

6、查看共享的文件服务

[root@localhost
data]# showmount -e 172.18.249.57

Export
list for 172.18.249.57:

/data/wordpress
172.18.10.1[01]

成功共享

二、配置Nginx+php-fpm server1

1、 使用yum安装相关服务

[root@localhost
~]# yum install -y nginx php-fpm php-mysql nfs-utils

2、 创建文件路径wordpress目录

[root@localhost
~]# mkdir -pv /data/wordpress

3、 启动nginx服务,并编辑相关配置文件wdps.conf

[root@localhost
~]# vim /etc/nginx/conf.d/wdps.conf

server
{

        listen          80 default_server;

        server_name     www.magedu.com;

        root            /data/wordpress/;

        index           index.php index.html index.htm;

        location / {

        }

 

        location ~ \.php$ {

                fastcgi_pass 127.0.0.1:9000;

                fastcgi_index index.php;

                fastcgi_param SCRIPT_FILENAME
/data/wordpress/$fastcgi_script_name;

                include fastcgi_params;

        }

}

[root@localhost
conf.d]# scp wdps.conf 172.18.10.11:/etc/nginx/conf.d/wdps.conf

[root@localhost
conf.d]# vim default.conf

删除 default_server字段

4、 启动nginx

[root@localhost
conf.d]# nginx

[root@localhost
conf.d]# ss –tnl

5、 启动php-fpm服务

[root@localhost
~]# service php-fpm start

Starting
php-fpm:                                          [ 
OK  ]

6、 将后端共享的wordpress文件夹挂载

[root@localhost
data]# mount -t nfs 172.18.249.57:/data/wordpress /data/wordpress

7、 编写lvs-dr脚本

[root@localhost
~]# vim dr.sh

#!/bin/bash

VIP=172.18.50.50

case
“$1” in

start)

        echo “配置 lvsRealServer 开始…”

        ifconfig lo:0 $VIP broadcast $VIP
netmask 255.255.255.255 up  ##
配置 VIP

        route add -host $VIP dev lo:0  ## 添加主机路由

        ## 限制响应和通告级别

        echo “1” >
/proc/sys/net/ipv4/conf/lo/arp_ignore

        echo “1” >
/proc/sys/net/ipv4/conf/all/arp_ignore

        echo “2” >
/proc/sys/net/ipv4/conf/lo/arp_announce

        echo “2” >
/proc/sys/net/ipv4/conf/all/arp_announce

        ;;

stop)

        echo “正在关闭 lvsRealserver”

        ifconfiglo:0down

        echo “0” >
/proc/sys/net/ipv4/conf/lo/arp_ignore

        echo “0” >
/proc/sys/net/ipv4/conf/all/arp_ignore

        echo “0” >
/proc/sys/net/ipv4/conf/lo/arp_announce

        echo “0” >
/proc/sys/net/ipv4/conf/all/arp_announce

        ;;

*)

        echo “用法:$0{start|stop}”

        exit 1

esac

[root@localhost
~]# bash dr.sh start

配置 lvsRealServer 开始

[root@localhost
~]# scp dr.sh 172.18.10.11:/root/

[root@localhost
~]# ip a

1:
lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN

    link/loopback 00:00:00:00:00:00 brd
00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

    inet 172.18.50.50/32 brd 172.18.50.50 scope
global lo:0

    inet6 ::1/128 scope host

       valid_lft forever preferred_lft forever

2:
eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
UP qlen 1000

    link/ether 00:0c:29:07:27:ff brd
ff:ff:ff:ff:ff:ff

    inet 172.18.10.10/16 brd 172.18.255.255
scope global eth1

    inet6 fe80::20c:29ff:fe07:27ff/64 scope
link

       valid_lft forever preferred_lft forever

三、配置Nginx+php-fpm server2

8、 使用yum安装相关服务

[root@localhost
~]# yum install -y nginx php-fpm php-mysql nfs-utils

9、 创建文件路径wordpress目录

[root@localhost
~]# mkdir -pv /data/wordpress

10、              启动nginx服务,并编辑相关配置文件wdps.conf

[root@localhost
~]# vim /etc/nginx/conf.d/wdps.conf

server
{

        listen          80 default_server;

        server_name     www.magedu.com;

        root            /data/wordpress/;

        index           index.php index.html index.htm;

        location / {

        }

 

        location ~ \.php$ {

                fastcgi_pass 127.0.0.1:9000;

                fastcgi_index index.php;

                fastcgi_param SCRIPT_FILENAME
/data/wordpress/$fastcgi_script_name;

                include fastcgi_params;

        }

}

[root@localhost
conf.d]# scp wdps.conf 172.18.10.11:/etc/nginx/conf.d/wdps.conf

[root@localhost
conf.d]# vim default.conf

删除 default_server字段

11、              启动nginx

[root@localhost
conf.d]# nginx

[root@localhost
conf.d]# ss –tnl

12、              启动php-fpm服务

[root@localhost
~]# service php-fpm start

Starting
php-fpm:                                          [  OK  ]

13、              将后端共享的wordpress文件夹挂载

[root@localhost
data]# mount -t nfs 172.18.249.57:/data/wordpress /data/wordpress

14、              编写lvs-dr脚本

[root@localhost
~]# vim dr.sh

#!/bin/bash

VIP=172.18.50.50

case
“$1” in

start)

        echo “配置 lvsRealServer 开始…”

        ifconfig lo:0 $VIP broadcast $VIP
netmask 255.255.255.255 up  ##
配置 VIP

        route add -host $VIP dev lo:0  ## 添加主机路由

        ## 限制响应和通告级别

        echo “1” >
/proc/sys/net/ipv4/conf/lo/arp_ignore

        echo “1” >
/proc/sys/net/ipv4/conf/all/arp_ignore

        echo “2” >
/proc/sys/net/ipv4/conf/lo/arp_announce

        echo “2” >
/proc/sys/net/ipv4/conf/all/arp_announce

        ;;

stop)

        echo “正在关闭 lvsRealserver”

        ifconfiglo:0down

        echo “0” >
/proc/sys/net/ipv4/conf/lo/arp_ignore

        echo “0” >
/proc/sys/net/ipv4/conf/all/arp_ignore

        echo “0” >
/proc/sys/net/ipv4/conf/lo/arp_announce

        echo “0” >
/proc/sys/net/ipv4/conf/all/arp_announce

        ;;

*)

        echo “用法:$0{start|stop}”

        exit 1

esac

[root@localhost
~]# bash dr.sh start

配置 lvsRealServer 开始

[root@localhost
~]# scp dr.sh 172.18.10.11:/root/

[root@localhost
~]# ip a

1:
lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN

    link/loopback 00:00:00:00:00:00 brd
00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

    inet 172.18.50.50/32 brd 172.18.50.50 scope
global lo:0

    inet6 ::1/128 scope host

       valid_lft forever preferred_lft forever

2:
eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
UP qlen 1000

    link/ether 00:0c:29:07:27:ff brd
ff:ff:ff:ff:ff:ff

    inet 172.18.10.10/16 brd 172.18.255.255
scope global eth1

    inet6 fe80::20c:29ff:fe07:27ff/64 scope
link

       valid_lft forever preferred_lft forever

四、配置LVS-server

1、 安装ipvsadm

[root@localhost
~]# yum install ipvsadm

2、 添加网卡别名,并查看

[root@localhost
~]# ip addr add 172.18.50.50/32 dev eth1

[root@localhost
~]# ip a

1:
lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN

    link/loopback 00:00:00:00:00:00 brd
00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

    inet6 ::1/128 scope host

       valid_lft forever preferred_lft forever

2:
eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
UP qlen 1000

    link/ether 00:0c:29:23:f3:8d brd
ff:ff:ff:ff:ff:ff

    inet 172.18.200.100/16 brd 172.18.255.255
scope global eth1

    inet 172.18.50.50/16 scope global secondary
eth1

    inet6 fe80::20c:29ff:fe23:f38d/64 scope
link

       valid_lft forever preferred_lft forever

3、 配置负载均衡

[root@localhost
~]# ipvsadm -A -t 172.18.50.50:80 -s rr ##
新增集群服务,使用rr轮巡模式

4、为集群添加real-server

[root@localhost
~]# ipvsadm -a -t 172.18.50.50:80 -r 172.18.10.10:80 -g

[root@localhost
~]# ipvsadm -a -t 172.18.50.50:80 -r 172.18.10.11:80 –g

5、查看集群规则

[root@localhost
~]# ipvsadm -Ln

IP
Virtual Server version 1.2.1 (size=4096)

Prot
LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  172.18.50.50:80 rr

  -> 172.18.10.10:80              Route   1     
0          0        

  -> 172.18.10.11:80              Route   1     
0          0 

 

 

打开浏览器,输出172.18.50.50

成功访问

lvs负载集群实验(实现wordpress)lvs负载集群实验(实现wordpress)lvs负载集群实验(实现wordpress)lvs负载集群实验(实现wordpress)

原创文章,作者:oranix,如若转载,请注明出处:http://www.178linux.com/75156

(0)
oranixoranix
上一篇 2017-05-09
下一篇 2017-05-11

相关推荐

  • 系统管理之程序包管理(一) rpm详解

    系统管理之程序包管理(1):     程序包管理是运维人员的基本工作素质之一。在操作系统上,不断的安装,卸载,配置应用程序包,让不同程序包运行提供不同的服务;利用某种工具完成某些操作的过程。这就要求运维工作人员熟悉安装,管理应用程序包。 在linux上,程序包主要有两种:tar,rpm包。 一、程序包概述: 系统接口   &nb…

    Linux干货 2016-08-21
  • LVM(重要)

    LVM   LVM(Logical Volume Manger),是一种磁盘分区管理机制,可以灵活的调整分区的大小。它是将多个硬盘组成卷组的形式实现的。说白了就是通过软件来实现对分区灵活管理。   LVM是将多块硬盘组成PV,再由PV组成VG,VG再组成lv,然后在lv上创建文件系统。   物理存储介:指的就是硬盘等,最基本的存储单元。   PV(physi…

    Linux干货 2016-08-30
  • 马哥教育网络第21期-第1周课程练习

    第一周博客 1、描述计算机的组成及其功能。 计算机的组成:运算器、控制器、储存器、输入设备、输出设备 运算器+控制器 = CPU 储存器 = RAM(内存) I/O(输入/输出)设备 = 硬盘、打印机、鼠标、键盘、显示器 CUP:运算和逻辑运算 储存器:缓存和储存数据 I/O设备:计算机与用户交互的设备 2、按系列罗列Linux的发行版,并描述不同发行版之间…

    Linux干货 2016-06-26
  • rsync+inotify 实现数据实时同步

        Rsync (Rmote sync)是一款非常好的数据同步工具,能够通过对比同步双方的数据变动,实现增量同步,还可以通过LAN/WAN实现远程多台主机间文件的同步,还能结合crond任务计划来执行自动备份,又可以结合ssh实现远程数据备份的安全,种种特性使他看起来相当优秀。但如果需备份数据十分庞大时,它的不足之处就显现出来了,比如…

    Linux干货 2015-07-24
  • man帮助

                                        正确使用 man帮助      在生产过程中,我们会遇到不同的技术故…

    2017-05-30
  • shell中的引号用法

        SHELL引号  在shell里可以通过使用单引号,双引号,反引号(TAB键上方的按键),反斜线来转换某些shell元字符的含义。比如说,我们希望echo命令显示出$本身字符的意义,而不是变量,我们需要使用某些功能来屏蔽$符号本身赋予的特殊含义,使其还原本身字面的意思。 主要讲述四个比较特殊常用的符号。 1.反…

    2017-06-11