構建環境:centos7.1
Diretor server:172.16.15.131 ( VIP:172.16.15.138 )
Real server:172.16.15.132/133 配置163源
拓撲結構如圖:
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 |
兩臺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
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
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