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的一套高性能的服務已構建成功。!?。?/p>

 

 

 

 

 

 

 

 







原創文章,作者:heilinux,如若轉載,請注明出處:http://www.www58058.com/35847

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

相關推薦

  • 程序包管理

    Windows與Linux不兼容 庫級別虛擬化: Linux:WINE Windows:Cygwin   程序包管理器: debian:deb,dpt redhat:rpm,rpm   Archlinux Gentoo   獲取rpm程序包的途徑: 1、系統發行版光盤或官方的服務器 centos鏡像: http://mirror…

    Linux干貨 2018-01-04
  • 讀寫執行權限對文件和目錄的影響

    權限的作用 對于linux運維工作來說,熟練掌握文件管理技能是非常重要的,所謂“一切皆文件”,控制住文件的權限,可以說也就控制住了linux系統。而且,運維的工作要和成千上萬的文件打交道,對于文件屬性的熟識程度對于工作的順利開展有著深遠的影響。綜上,了解文件,熟悉文件,掌握文件,是我們運維的一個重要的課程。 不同權限對文件和目錄的影響 首先,我們現對權限進行…

    Linux干貨 2017-07-30
  • 學習學習,復習復習,linux基礎中的基礎

    計算機的組成及其功能          根據馮諾依曼體系結構構成的計算機,應該具備以下幾點功能: l  具有把程序、數據輸入到計算機的能力 l  具有長期記憶程序、數據、中間結果以及最終結果的能力 l  能夠完成各種算術運算、邏輯運算和數據傳輸的數據…

    Linux干貨 2016-09-25
  • 第四周作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@localhost ~]# cp /etc/skel /home/tuser1 [root@localhost ~]# chmod -R&nb…

    Linux干貨 2017-01-18
  • DNS轉發、ACL以及VIEW

    DNS全稱是Domain Name System的簡稱,即域名系統。因特網上作為域名和IP地址相互映射的一個分布式數據庫,能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析(或主機名解析)。DNS協議運行在UDP/TCP協議之上,使用端口號53。 DNS轉發、ACL以及VIEW…

    Linux干貨 2016-12-08
  • Linux系統的文件管理命令及bash的相關工作特性

    熟悉Linux系統的文件管理命令,了解bash的工作特性,加強練習并掌握其內容。

    2017-09-30
欧美性久久久久