lvs-DR模型构建高性能集群

构建环境:centos7.1

    Diretor server:172.16.15.131  (  VIP:172.16.15.138 )

    Real server:172.16.15.132/133      配置163源

拓扑结构如图:

拓扑001.png

1.构建LVS-DR 实现

下面我们VS/DR介绍详细的配置过程。
Diretor server上面的配置:

//首先在Director Server上绑定一个虚拟IP(也叫VIP),此IP用于对外提供服务:
ifconfig eth0:0 172.16.15.138 broadcast 172.16.15.138 netmask 255.255.255.255 up
//给设备eth0:0指定一条路由
route add -host 172.16.15.138 dev eth0:0
//启用系统的包转发功能
echo "1">/proc/sys/net/ipv4/ip_forward
//安装ipvsadm
yum install -y ipvsadm
//清楚ipvsadm以前的设置
ipvsadm -C
//添加一个新的虚拟IP记录192.168.132.254,其持续服务之间是120秒
ipvsadm -A -t 172.16.15.138:80 -s rr -p 120
//在新增的虚拟IP记录中新增两天real server记录,-g即为使用VS/DR模式
ipvsadm -a -t 172.16.15.138:80 -r 172.16.15.132:80 -g
ipvsadm -a -t 172.16.15.138:80 -r 172.16.15.133:80 -g 
脚本如下
#!/bin/bash
VIP=172.16.15.138
RIP1=172.16.15.131
RIP2=172.16.15.132
case "$1" in
  start)
    echo "开始配置LVS Director Server"
    ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
    route add -host $VIP dev eth0:0
    echo "1">/proc/sys/net/ipv4/ip_forward
    ipvsadm -C
    ipvsadm -A -t $VIP:80 -s rr -p 120
    ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
    ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
    ipvsadm
    echo "配置成功"
    ;;
  stop)
    echo "正在关闭LVS Director Server"
    echo "0">/proc/sys/net/ipv4/ip_forward
    ipvsadm -C
    ifconfig eth0:0 down
    echo "关闭成功!"
    ;;
  *)
    echo "用法:$0 {start|stop}"
    exit 1
esac
 
//查看LVS状态
ipvsadm -Ln

blob.png

 

两台real server上的配置:

/*在回环设备上绑定了一个虚拟IP地址,并设定其子网掩码为255.255.255.255,与Director Server上的虚拟IP保持互通*/
ifconfig lo:0 172.16.15.138 broadcast 172.16.15.138 netmask 255.255.255.255 up
route add -host172.16.15.138 dev lo:0

//禁用本机的ARP请求

 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

编辑为如下脚本lvsRS.sh

#!/bin/bash

VIP=172.16.15.138

case "$1" in
  start)
   echo "配置lvs Real Server开始..."
   ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
   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 "正在关闭lvs Real server"
   ifconfig lo:0 down
   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

blob.png

LVS-DR模型已搭建成功。


第二步,两台realserver上搭建nginx

#编译nginx环境前需要先把gcc等开发库之类提前装好;

[root@realserver1 ~]# yum -y install gcc gcc-c++ automake autoconf libtool make
#安装pcre是为了支持rewrite,
#zlib是为了支持gzip压缩
#openssl是为了支持https;
[root@realserver1 ~]# yum install -y pcre-devel.x86_64 pcre-devel.x86_64  zlib.x86_64 zlib-devel.x86_64  openssl-devel.x86_64 openssl.x86_64
[root@realserver1 ~]# groupadd www 
[root@realserver1 ~]# useradd -r -g www www  -s /sbin/nologin   #运行nginx的用户和用户组
[root@realserver1 nginx-1.8.1]# mkdir -pv /opt/application/nginx
mkdir: created directory `/opt/application'
mkdir: created directory `/opt/application/nginx'
[root@realserver1 tools]# tar -xf nginx-1.8.1.tar.gz
[root@realserver1 tools]# cd nginx-1.8.1
[root@realserver1 nginx-1.8.1]# ./configure --prefix=/opt/application/nginx/ --user=www --group=www --with-http_stub_status_module --with-http_ssl_module  --with-http_gzip_static_module --with-http_realip_module --with-ipv6
# --with-http_stub_status_module 启用nginx状态监控
# --with-http_ssl_module 启用HTTPS加密
# --with-http_spdy_module 启用spdy支持,缩短为网页加载时间
# --with-http_gzip_static_module  启用静态压缩
# --with-http_realip_module 做代理时获取客户端真实IP
# --with-ipv6 支持ipv6
[root@realserver1 nginx-1.8.1]# make ;make install

在realserver上安装percona (mysql)

1.解压包
tar xvf Percona-Server-5.7.10-3-r63dafaf-el7-x86_64-bundle.tar 
2.删除无用的rpm包
rm Percona-Server-test-57-5.7.10-3.1.el7.x86_64.rpm 
rm Percona-Server-tokudb-57-5.7.10-3.1.el7.x86_64.rpm 
3.安装相关联数据包/卸载冲突mariadb.lib
yum install -y perl
 yum -y install libaio
yum install -y net-tools
rpm -qa|grep -i mariadb
 rpm -e mariadb-libs-5.5.44-1.el7_1.x86_64  --nodeps  //强制卸载
4.安装rpm包
rpm -ivh Percona-Server-*.rpm
5.启动mysql
service mysql start
6.查看初始密码
grep 'temporary password' /var/log/mysqld.log
7.验证登录
mysql -uroot -p{passwd}
8.修改初始密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '*******';
flush privileges;

 

[root@php-server ~]# yum -y install libmcrypt libmcrypt-devel mhash mhash-devel install #
libxml2-devel openssl openssl-devel bzip2-devel libcurl-devel gd gd-devel.x86_64 
[root@php-server ~]# groupadd www
[root@php-server ~]# useradd -r -g www www -s /sbin/nologin #运行php-fpm的用户和用户组
[root@php-server ~]# wget http://cn.php.net/distributions/php-5.6.24.tar.gz
[root@php-server ~]# tar -zxf php-5.6.24.tar.gz 
[root@php-server ~]# cd php-5.6.24
mkdir: created directory `/opt/application'
mkdir: created directory `/opt/application/php'
[root@php-server php-5.6.24]# ./configure \
--prefix=/opt/application/php \
--with-config-file-path=/etc \
--with-fpm-user=www  \
--with-fpm-group=www \
--enable-fpm \
--enable-ftp \
--enable-zip \
--enable-soap \
--enable-xml \
--enable-bcmath \
--enable-shmop \
--enable-exif \
--enable-pcntl \
--enable-opcache \
--enable-sysvsem \
--enable-mbregex \
--enable-mbstring \
--enable-sockets \
--enable-gd-native-ttf \
--enable-inline-optimization \
--with-zlib \
--with-curl \
--with-gd \
--with-mcrypt \
--with-openssl \
--with-mhash \
--with-xmlrpc \
--with-gettext \
--with-iconv-dir \
--with-freetype-dir \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-libxml-dir=/usr \
--with-pdo-mysql=mysqlnd \
--disable-rpath \
--disable-ipv6 \
--disable-debug \
--disable-fileinfo \
[root@php-server php-5.6.24]# make install
[root@php-server php-5.6.24]# cp -a sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
[root@php-server php-5.6.24]# chmod +x /etc/init.d/php-fpm 
[root@php-server php-5.6.24]# cp -a php.ini-production /etc/php.ini 
cp: overwrite `/etc/php.ini'? y
[root@php-server ~]# cd /opt/application/php/etc/
[root@php-server etc]# cp  php-fpm.conf.default php-fpm.conf
[root@php-server etc]# vim php-fpm.conf     #将164行注释掉,修改为
164 ;listen = 127.0.0.1:9000
165 listen = 172.16.120.240:9000   
[root@php-server etc]# service php-fpm start
[root@php-server etc]# chkconfig --add php-fpm
[root@php-server etc]# chkconfig php-fpm on
[root@php-server etc]# chkconfig --list php-fpm
php-fpm         0:off   1:off   2:on    3:on    4:on    5:on    6:off


修改nginx和php的配置文件

# vi /opt/application/nginx/conf/nginx.conf
        location / {
            root   /opt/application/nginx/html/www;
            index  index.html index.htm;
        }
        location ~ \.php$ {
            root           /opt/application/nginx/html/www;
            fastcgi_pass   172.16.120.240:9000; 
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

在172.16.120.240上安装NFS挂载wordpress

[root@php-server ~]# yum install -y nfs-utils.x86_64 nfs-utils-lib.x86_64  nfs-utils-lib-devel.x86_64 
# yum安装nfs程序
[root@php-server ~]# /etc/init.d/rpcbind start
[root@php-server ~]# /etc/init.d/nfs start
[root@php-server data]# mkdir -pv /data/www
mkdir: created directory `/data'
mkdir: created directory `/data/www'
[root@php-server data]# cat /etc/exports 
/data/www   *(rw,no_root_squash)
[root@php-server data]# ll -d /data/www/
drwxrwxrwx 2 root root 4096 Aug 13 04:02 /data/www/
[root@php-server data]# service nfs restart
[root@php-server data]# showmount -e 172.16.120.240
Export list for 172.16.120.240:
/data/www *
#下载wordpress到php-server并解压缩
[root@php-server www]# chown -R www.www *

在两个realserver上配置nfs客户端

####安装nfs####

[root@realserver1 html]# yum install -y nfs-utils.x86_64 nfs-utils-lib.x86_64  nfs-utils-lib-devel.x86_64
#把172.16.120.240上的程序挂载到realserver1、realserver2对应目录上
[root@realserver1 html]# mount -t nfs 172.16.120.240:/data/www/ /opt/application/nginx/html/wordpress/

mysql进行如下设

mysql> CREATE DATABASE `wordpress` CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> GRANT ALL ON wordpress.* TO 'wordpress'@'172.16.120.240' IDENTIFIED BY '123456';
mysql> flush privileges;

####wordpress 设置####

[root@mytest-120-240 html]# cat wp-config.php
/** WordPress数据库的名称 */
define('DB_NAME', 'wordpress');
/** MySQL数据库用户名 */
define('DB_USER', 'root');
/** MySQL数据库密码 */
define('DB_PASSWORD', '12345');
/** MySQL主机 */
define('DB_HOST', '172.16.15.132');
/** 创建数据表时默认的文字编码 */
define('DB_CHARSET', 'utf8');

至此基于LVS-DR的一套高性能的服务已构建成功。!!!

 

 

 

 

 

 

 

 







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

(0)
heilinuxheilinux
上一篇 2016-08-22
下一篇 2016-08-22

相关推荐

  • redis主/从配置及基于sentinel的故障转移

    一、NoSQL基础概念: ACID:原子性、一致性、隔离性、持久性;特性:数据量大、数据变化非常大(数据增长化、流量分布变化、数据间耦合结构变化)、数据源很多; CAP、BASECAP C:多个数据节点的的数据一致;A:用户发出请求后的有限时间范围内返回结果;P:network partition,网络发生分区后,服务是否依可用;CAP理论:一个分布式系统不…

    Linux干货 2014-10-15
  • 马哥教育网络班21期+第7周课程练习

    1、创建一个10G分区,并格式为ext4文件系统; (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; [root@localhost ~]#mke2fs -t ext4 -b 2048 -m 2 -L &qu…

    Linux干货 2016-08-15
  • VSFTPD+PAM+[基于文件虚拟用户认证 | 基于MYSQL虚拟用户认证]

    VSFTPD+PAM+[基于文件虚拟用户认证 | 基于MYSQL虚拟用户认证] VSFTPD+PAM+[基于文件虚拟用户认证 | 基于MYSQL虚拟用户认证] 一、实验环境 二、实验步骤 1、通过mysql数据库方式虚拟用户认证 1.1数据库配置 1.2FTP配置 1.3测试 2、通过文件方式进行虚拟用户认证 一、实验环境 CentOS 6.7+vsftpd…

    Linux干货 2016-04-18
  • web服务 初步

    Web Service初步 一、引言 Web服务也是一个C/S架构,服务器端就是一个进程,客户端是一个浏览器。我们打开浏览器的时候,都会看到hppt,https的字样,然后才是输入网址,这两个协议是web服务的应用层协议,用来实现某些具体应用的。像https,前面学习openssl的时候也接触过,https=http+ssl。 web的传输层协议用到了tcp…

    Linux干货 2016-12-09
  • 计算机简介

    计算机的简介 电子计算机(英语:computer),亦称电脑,是一种利用「电子学」原理,根据一系列指令对数据进行处理的工具计算机种类繁多,但实际来看,计算机总体上是处理信息的工具。计算机在组成上形式不一,早期计算机的体积足有一间房屋的大小,而今天某些嵌入式计算机可能比一副「扑克牌」还小。当然,即使在今天依然有大量体积庞大的巨型计算机为特别的[科学]计算或面向…

    Linux干货 2016-10-28
  • Centos启动过程

    启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。 启动第二步--读取MBR 众所周知,硬盘上第0磁道第一…

    Linux干货 2017-03-30