亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 操作系統 > 正文

基于corosync+pacemaker+drbd+LNMP做web服務器的高可用集群

2024-06-28 13:19:33
字體:
來源:轉載
供稿:網友
基于corosync+pacemaker+drbd+LNMP做web服務器的高可用集群

實驗系統:CentOS 6.6_x86_64

實驗前提:

  1)提前準備好編譯環境,防火墻和selinux都關閉;

  2)本配置共有兩個測試節點,分別coro1和coro2,對應的ip地址分別為192.168.19.55和192.168.19.98;

  3)集群服務為nginx服務;

  4)提供web服務的地址為192.168.19.150,即VIP;

實驗軟件:corosync-0:1.4.7-1.el6 pacemaker-0:1.1.12-4.el6 crmsh-2.1-1.6 drbd-8.4.4 php-5.6.11 mariadb-10.0.20 tengine-2.1.0

軟件下載:http://pan.baidu.com/s/116gQQ

注意事項:單主機操作會有標注,除此之外的是兩臺主機都要完成的

實驗拓撲:

一、準備工作

  1.所有節點的主機名稱和對應的IP地址解析服務可以正常工作,且每個節點的主機名稱需要跟“uname -n”命令的結果保持一致。因此,需要保證兩個節點上的/etc/hosts文件均添加了下面的內容:

    

  2.為了使得重新啟動系統后仍能保持如上的主機名稱,還分別需要在各節點執行類似如下的命令:

    coro1上:

1 sed -i 's@/(HOSTNAME=/).*@/1coro1@g'  /etc/sysconfig/network2 hostname coro1

    coro2上:

1 sed -i 's@/(HOSTNAME=/).*@/1coro2@g'  /etc/sysconfig/network2 hostname coro2

  3.設定兩個節點可以基于密鑰進行ssh通信,并測試:

    coro1上:

1 ssh-keygen -t rsa2 ssh-copy-id -i ~/.ssh/id_rsa.pub root@coro2

    coro2上:

ssh-keygen -t rsassh-copy-id -i ~/.ssh/id_rsa.pub root@coro1

    

  4.兩個節點時間必須同步:一般使用ntpdate進行操作,這里不再演示。

二、安裝corosync和pacemaker并配置

  1.安裝epel源:

1 yum -y install epel*

  2.安裝corosync和pacemaker:

1 yum -y install corosync pacemaker

  3.在coro1上編輯/etc/corosync.conf

 1 cd /etc/corosync/ 2 cp corosync.conf.example corosync.conf 3 vim corosync.conf 4 ------------------------------------ 5 bindnetaddr: 192.168.19.0        //為你的網卡所在網絡的網絡地址 6 mcastaddr: 239.255.19.1          //組播地址 7 service {                       //添加此部分 8   ver:  0 9   name: pacemaker10   # use_mgmtd: yes11 }

  4.在coro1上生成節點間通信時用到的認證密鑰文件:

1 corosync-keygen

  5.將corosync.conf和authkey復制至coro2上:

1 scp -p corosync.conf authkey coro2:/etc/corosync/

三、安裝crmsh并啟動corosync

  1.安裝crmsh,需要提前下好rpm包:

1 yum -y install crmsh-2.1-1.6.x86_64.rpm

  2.啟動corosync(在coro1上執行):

1 service corosync start

  3.查看corosync引擎是否正常啟動:

1 grep -e "Corosync Cluster Engine" -e "configuration file" /var/log/cluster/corosync.log

    

  4.查看初始化成員節點通知是否正常發出:

1 grep TOTEM /var/log/cluster/corosync.log

    

  5.檢查啟動過程中是否有錯誤產生。下面的錯誤信息表示packmaker不久之后將不再作為corosync的插件運行,因此,建議使用cman作為集群基礎架構服務,此處可安全忽略:

1 grep ERROR: /var/log/cluster/corosync.log

  6.查看pacemaker是否正常啟動:

1 grep pcmk_startup /var/log/cluster/corosync.log

    

  7.如果上面命令執行均沒有問題,接著可以在coro1上執行如下命令啟動coro2上的corosync:

1 ssh coro2 'service corosync start'

  8.如果安裝了crmsh,可使用如下命令查看集群節點的啟動狀態。從下面的信息可以看出兩個節點都已經正常啟動,并且集群已經處于正常工作狀態:

1 crm status

    

四、編譯安裝drbd并配置

  drbd共有兩部分組成:內核模塊和用戶空間的管理工具。其中drbd內核模塊代碼已經整合進Linux內核2.6.33以后的版本中,因此,如果您的內核版本高于此版本的話,你只需要安裝管理工具即可;否則,您需要同時安裝內核模塊和管理工具兩個軟件包,并且此兩者的版本號一定要保持對應。

  1.安裝用戶空間工具:

1 tar xf drbd-8.4.4.tar.gz 2 cd drbd-8.4.43 ./configure --PRefix=/usr/local/drbd --with-km4 make KDIR=/usr/src/kernels/2.6.32-504.30.3.el6.x86_64      //換成自己的內核版本5 make install6 mkdir -pv /usr/local/drbd/var/run/drbd7 cp /usr/local/drbd/etc/rc.d/init.d/drbd /etc/rc.d/init.d8 chkconfig --add drbd9 chkconfig drbd off                            //一會作為corosync的資源,所以不要開機自動啟動

  2.安裝drbd模塊:

1 cd drbd2 make clean3 make KDIR=/usr/src/kernels/2.6.32-504.30.3.el6.x86_64      //換成自己的內核版本4 cp drbd.ko /lib/modules/`uname -r`/kernel/lib5 depmod

  3.給主機分區,大小為5G。這里不再給出具體步驟,兩臺主機的/dev/sda7為一會要使用的分區:

    

  4.配置drbd(在coro1上操作):

    drbd的主配置文件為/etc/drbd.conf;為了管理的便捷性,目前通常會將些配置文件分成多個部分,且都保存至/etc/drbd.d/目錄中,主配置文件中僅使用"include"指令將這些配置文件片斷整合起來。通常/etc/drbd.d目錄中的配置文件為global_common.conf和所有以.res結尾的文件。其中global_common.conf中主要定義global段和common段,而每一個.res的文件用于定義一個資源。

    在配置文件中,global段僅能出現一次,且如果所有的配置信息都保存至同一個配置文件中而不分開為多個文件的話,global段必須位于配置文件的最開始處。目前global段中可以定義的參數僅有minor-count, dialog-refresh, disable-ip-verification和usage-count。common段則用于定義被每一個資源默認繼承的參數,可以在資源定義中使用的參數都可以在common段中定義。實際應用中,common段并非必須,但建議將多個資源共享的參數定義為common段中的參數以降低配置文件的復雜度。resource段則用于定義drbd資源,每個資源通常定義在一個單獨的位于/etc/drbd.d目錄中的以.res結尾的文件中。資源在定義時必須為其命名,名字可以由非空白的ASCII字符組成。每一個資源段的定義中至少要包含兩個host子段,以定義此資源關聯至的節點,其它參數均可以從common段或drbd的默認中進行繼承而無須定義。    注意:由于本試驗中drbd是編譯安裝的,因此默認配置文件所在路徑為:/usr/local/drbd/etc
 1 cd /usr/local/drbd/etc/drbd.d/ 2 vim global_common.conf 3 -------------------------------------- 4 global { 5         usage-count no; 6         # minor-count dialog-refresh disable-ip-verification 7 } 8  9 common {10         protocol C;11 12         handlers {13                 # These are EXAMPLE handlers only.14                 # They may have severe implications,15                 # like hard resetting the node under certain circumstances.16                 # Be careful when chosing your poison.17 18                 # pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /p19 roc/sysrq-trigger ; reboot -f";20                 # pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /p21 roc/sysrq-trigger ; reboot -f";22                 # local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-23 trigger ; halt -f";24 # fence-peer "/usr/lib/drbd/crm-fence-peer.sh";25                 # split-brain "/usr/lib/drbd/notify-split-brain.sh root";26                 # out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";27                 # before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k";28                 # after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh;29         }30 31         startup {32                 # wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb33         }34 35         options {36                 # cpu-mask on-no-data-accessible37         }38 39         disk {40                 #on-io-error detach;41                 # size max-bio-bvecs on-io-error fencing disk-barrier disk-flushes42                 # disk-drain md-flushes resync-rate resync-after al-extents43                 # c-plan-ahead c-delay-target c-fill-target c-max-rate44                 # c-min-rate disk-timeout45         }46         net {47                 #cram-hmac-alg "sha1";48                 #shared-secret "mydrbd";49                 # protocol timeout max-epoch-size max-buffers unplug-watermark50                 # connect-int ping-int sndbuf-size rcvbuf-size ko-count51                 # allow-two-primaries cram-hmac-alg shared-secret after-sb-0pri52                 # after-sb-1pri after-sb-2pri always-asbp rr-conflict53                 # ping-timeout data-integrity-alg tcp-cork on-congestion54                 # congestion-fill congestion-extents csums-alg verify-alg55                 # use-rle56         }57 }    

  5.定義一個資源,web是資源名,可以自己改:

 1 vim /usr/local/drbd/etc/drbd.d/web.res 2 -------------------------------------- 3 resource web { 4   on coro1 { 5     device    /dev/drbd0; 6     disk      /dev/sda7; 7     address   192.168.19.55:7789; 8     meta-disk internal; 9   }10   on coro2 {11     device    /dev/drbd0;12     disk      /dev/sda7;13     address   192.168.19.98:7789;14     meta-disk internal;15   }16 }

  6.以上文件在兩個節點上必須相同,因此,可以基于ssh將剛才配置的文件全部同步至coro2節點:

1 scp /usr/local/drbd/etc/drbd.d/* coro2:/usr/local/drbd/etc/drbd.d/

  7.在兩個節點上初始化已定義的資源并啟動服務:

1 drbdadm create-md web2 service drbd start

  8.查看啟動狀態,從下面的信息中可以看出此時兩個節點均處于Secondary狀態:

1 cat /proc/drbd

    

  9.我們接下來需要將其中一個節點設置為Primary,在要設置為Primary的節點上執行如下命令,這里在coro1上操作:

1 drbdadm primary --force web2 cat /proc/drbd

    

    而后再次查看狀態,可以發現數據同步過程已經開始。等數據同步完成以后再次查看狀態,可以發現主次位置顯示是不一樣的。斜線前面的代表當前主機,后面的代表對方主機。

      在coro1上查看:

    

      在coro2上查看:

    

  10.創建文件系統并掛載:

    文件系統的掛載只能在Primary節點進行,因此,也只有在設置了主節點后才能對drbd設備進行格式化,這里在coro1上進行操作。

1 mke2fs -t ext4 -L DRBD /dev/drbd02 mkdir /mydata                         //創建掛載點3 mount /dev/drbd0 /mydata/4 mkdir /mydata/www                     //創建網頁目錄5 mkdir /mydata/data                   //創建數據庫目錄

  11.切換Primary和Secondary節點:

    對主Primary/Secondary模型的drbd服務來講,在某個時刻只能有一個節點為Primary,因此要切換兩個節點的角色,只能在先將原有的Primary節點設置為Secondary后,才能原來的Secondary節點設置為Primary。

      在coro1上:

1 umount /mydata/2 drbdadm secondary web                //變為secondary節點

      在coro2上:

1 drbdadm primary web                   //變為primary節點2 cat /proc/drbd3 mkdir /mydata                         //創建掛載點4 mount /dev/drbd0 /mydata/5 ls /mydata/

    可以看到,coro2已經成為了Primary,之前在coro1上創建的目錄也能夠訪問到。測試完成后,再次將coro1變為Primary并掛載。

    

    

五、準備LNMP環境

  1.編譯安裝tengine:

1 yum -y install pcre-devel2 useradd -r nginx                   //要保證兩臺主機的nginx用戶id和組id完全一致3 tar xf tengine-2.1.0.tar.gz4 cd tengine-2.1.05 ./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre6 make && make install

  2.為tengine提供腳本:

  1 vim /etc/init.d/nginx  2 ------------------------------------  3 #!/bin/sh  4 #  5 # nginx - this script starts and stops the nginx daemon  6 #  7 # chkconfig:   - 85 15   8 # description:  Nginx is an HTTP(S) server, HTTP(S) reverse /  9 #               proxy and IMAP/POP3 proxy server 10 # processname: nginx 11 # config:      /etc/nginx/nginx.conf 12 # config:      /etc/sysconfig/nginx 13 # pidfile:     /var/run/nginx.pid 14   15 # Source function library. 16 . /etc/rc.d/init.d/functions 17   18 # Source networking configuration. 19 . /etc/sysconfig/network 20   21 # Check that networking is up. 22 [ "$NETWORKING" = "no" ] && exit 0 23   24 nginx="/usr/local/nginx/sbin/nginx" 25 prog=$(basename $nginx) 26   27 NGINX_CONF_FILE="/etc/nginx/nginx.conf" 28   29 [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx 30   31 lockfile=/var/lock/subsys/nginx 32   33 make_dirs() { 34    # make required directories 35    user=`nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=/([^ ]*/).*//1/g' -` 36    options=`$nginx -V 2>&1 | grep 'configure arguments:'` 37    for opt in $options; do 38        if [ `echo $opt | grep '.*-temp-path'` ]; then 39            value=`echo $opt | cut -d "=" -f 2` 40            if [ ! -d "$value" ]; then 41                # echo "creating" $value 42                mkdir -p $value && chown -R $user $value 43            fi 44        fi 45    done 46 } 47   48 start() { 49     [ -x $nginx ] || exit 5 50     [ -f $NGINX_CONF_FILE ] || exit 6 51     make_dirs 52     echo -n $"Starting $prog: " 53     daemon $nginx -c $NGINX_CONF_FILE 54     retval=$? 55     echo 56     [ $retval -eq 0 ] && touch $lockfile 57     return $retval 58 } 59   60 stop() { 61     echo -n $"Stopping $prog: " 62     killproc $prog -QUIT 63     retval=$? 64     echo 65     [ $retval -eq 0 ] && rm -f $lockfile 66     return $retval 67 } 68   69 restart() { 70     configtest || return $? 71     stop 72     sleep 1 73     start 74 } 75   76 reload() { 77     configtest || return $? 78     echo -n $"Reloading $prog: " 79     killproc $nginx -HUP 80     RETVAL=$? 81     echo 82 } 83   84 force_reload() { 85     restart 86 } 87   88 configtest() { 89   $nginx -t -c $NGINX_CONF_FILE 90 } 91   92 rh_status() { 93     status $prog 94 } 95   96 rh_status_q() { 97     rh_status >/dev/null 2>&1 98 } 99  100 case "$1" in101     start)102         rh_status_q && exit 0103         $1104         ;;105     stop)106         rh_status_q || exit 0107         $1108         ;;109     restart|configtest)110         $1111         ;;112     reload)113         rh_status_q || exit 7114         $1115         ;;116     force-reload)117         force_reload118         ;;119     status)120         rh_status121         ;;122     condrestart|try-restart)123         rh_status_q || exit 0124             ;;125     *)126         echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"127         exit 2128 esac129 ------------------------------------130 chmod +x /etc/init.d/nginx131 chkconfig --add nginx132 chkconfig nginx off                      //一會作為corosync的資源,所以不要開機自動啟動

  3.安裝MySQL,man和path路徑輸出這里不再演示:

1 useradd -r mysql                                               //保證兩臺主機的mysql用戶id和組id完全一致2 tar xf mariadb-10.0.20-linux-x86_64.tar.gz -C /usr/local/3 cd /usr/local/4 ln -sv mariadb-10.0.20-linux-x86_64 mysql5 cd mysql/6 chown -R root:mysql .7 ln -sv /usr/local/mysql/include  /usr/include/mysql            //輸出mysql的頭文件至系統頭文件路徑8 echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf     //輸出mysql的庫文件給系統庫查找路徑9 ldconfig

    本試驗中coro1為drbd的Primary,所以下面的操作在coro1上進行,提前將/dev/brbd0掛載至/mydata:

 1 chown -R mysql:mysql /mydata/data/ 2 /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/mydata/data/    //初始化mysql 3 cp /usr/local/mysql/support-files/my-large.cnf /etc/my.cnf                  //提供配置文件 4 vim /etc/my.cnf 5 ------------------------------------ 6 datadir = /mydata/data                                          //增加此項 7 ------------------------------------ 8 cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld                //提供服務腳本 9 scp -p /etc/init.d/mysqld coro2:/etc/init.d/10 scp -p /etc/my.cnf coro2:/etc/11 chkconfig --add mysqld12 chkconfig mysqld off                                          //一會作為corosync的資源,所以不要開機自動啟動13 service mysqld start14 /usr/local/mysql/bin/mysql                                    //連接mysql15 ------------------------------------16 CREATE DATABASE abcd;                                        //創建abcd數據庫17 SHOW DATABASES;                                               //顯示數據庫列表

    

    停掉mysql,讓drbd主節點切換至coro2并掛載,在coro2上連接mysql,切換主次步驟請參考前面:

1 chkconfig --add mysqld2 chkconfig mysqld off3 service mysqld start4 /usr/local/mysql/bin/mysql5 -----------------------------------6 SHOW DATABASES;

    

    mysql測試成功,coro2上也可以看到coro1創建的數據。停掉mysql,讓主節點再次切換到coro1上并掛載/dev/drbd0。

  4.編譯安裝php:

1 yum -y install libxml2-devel bzip2-devel libcurl-devel libmcrypt-devel2 tar xf php-5.6.11.tar.bz2 3 cd php-5.6.114 ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --enable-fpm --enable-sockets --enable-sysvshm  --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-libxml-dir=/usr --enable-xml  --with-mhash --with-mcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-curl --with-pdo-mysql=/usr/local/mysql5 make && make install

  5.為php和php-fpm提供配置文件:

 1 cp php.ini-production /etc/php.ini                                             //提供php配置文件 2 cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm                       //提供腳本 3 chmod +x /etc/init.d/php-fpm 4 chkconfig --add php-fpm 5 chkconfig php-fpm off                                               //一會作為corosync的資源,所以不要開機自動啟動 6 cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf    //提供php-fpm配置文件 7 vim /usr/local/php/etc/php-fpm.conf 8 --------------------------------------------------- 9 pm.max_children = 15010 pm.start_servers = 811 pm.min_spare_servers = 512 pm.max_spare_servers = 1013 pid = /usr/local/php/var/run/php-fpm.pid14 user = nginx15 group = nginx16 listen = 192.168.19.150:9000                                  //監聽在VIP的9000端口

六、LNMP與DRBD結合

  1.現在試驗中coro1為drbd的Primary節點,所以以下操作在coro1上進行:

 1 chown -R nginx:nginx /mydata/www/ 2 vim /etc/nginx/nginx.conf 3 ---------------------------------------- 4 location / { 5               root   /mydata/www; 6               index  index.php index.html index.htm; 7           } 8 location ~ /.php$ { 9              root   /mydata/www;10              fastcgi_pass   192.168.19.150:9000;11              fastcgi_index  index.php;12              fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;13              include        fastcgi_params;14          }15 ----------------------------------------16 vim /etc/nginx/fastcgi_params                    //將此文件內容改為如下幾行17 ----------------------------------------18 fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;19 fastcgi_param  SERVER_SOFTWARE    nginx;20 fastcgi_param  QUERY_STRING       $query_string;21 fastcgi_param  REQUEST_METHOD     $request_method;22 fastcgi_param  CONTENT_TYPE       $content_type;23 fastcgi_param  CONTENT_LENGTH     $content_length;24 fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;25 fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;26 fastcgi_param  REQUEST_URI        $request_uri;27 fastcgi_param  DOCUMENT_URI       $document_uri;28 fastcgi_param  DOCUMENT_ROOT      $document_root;29 fastcgi_param  SERVER_PROTOCOL    $server_protocol;30 fastcgi_param  REMOTE_ADDR        $remote_addr;31 fastcgi_param  REMOTE_PORT        $remote_port;32 fastcgi_param  SERVER_ADDR        $server_addr;33 fastcgi_param  SERVER_PORT        $server_port;34 fastcgi_param  SERVER_NAME        $server_name;35 ----------------------------------------36 scp /etc/nginx/nginx.conf coro2:/etc/nginx/37 scp /etc/nginx/fastcgi_params coro2:/etc/nginx/38 ifconfig eth0:0 192.168.19.150/24 up            //手動啟動VIP39 service nginx start40 service mysqld start41 service php-fpm start

    在/mydata/www下放入網頁文件,此處以Wordpress為例。用瀏覽器打開http://192.168.19.150,如果沒問題,則會出現安裝頁面,按照提示安裝即可。我這里手動創建了wordpress數據庫,并給root用戶添加了密碼,安裝時就直接使用root。

1 /usr/local/mysql/bin/mysql2 -----------------------------------------3 CREATE DATABASE wordpress;4 UPDATE mysql.user SET Password=PASSWORD(123456) WHERE User='root';5 FLUSH PRIVILEGES;

    

  2.切換drbd的Primary節點為coro2,并測試:

    在coro1上操作:

1 service nginx stop2 service mysqld stop3 service php-fpm stop4 umount /mydata/5 drbdadm secondary web6 ifconfig eth0:0 down

    在coro2上操作:

1 drbdadm primary web2 mount /dev/drbd0 /mydata/3 ifconfig eth0:0 192.168.19.150/24 up4 service nginx start5 service mysqld start6 service php-fpm start

    手動切換完畢之后,同樣打開http://192.168.19.150,進行任何操作均沒問題。至此,drbd+LNMP搭建完畢。下一步,就要將corosync和pacemaker整合進來了?,F在檢查兩臺主機的VIP、nginx、php-fpm、mysql、drbd均為關閉狀態,且不能開機自動啟動。

    

七、使用crmsh為corosync添加資源

  1.創建drbd配置文件的軟連接(兩臺機器均操作):

1 ln -sv /usr/local/drbd/etc/drbd.conf /etc/drbd.conf2 ln -sv /usr/local/drbd/etc/drbd.d /etc/drbd.d

  2.修改php-fpm啟動腳本為如下內容,如不修改,則corosync無法識別(兩臺機器均操作):

  1 #!/bin/sh  2 #=======================================================================================  3 # php-fpm - this script start and stop the php-fpm daemon  4 #  5 # chkconfig 35 on  6 # description: php-fpm is a FastCGI web server.  7 # processname: php-fpm  8 # config: /usr/local/php/etc/php-fpm.conf  9 # pidfile: /var/run/php-fpm.pid 10 #======================================================================================= 11 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 12      13 BINFILE="/usr/local/php/sbin/php-fpm" 14 CFGFILE="/usr/local/php/etc/php-fpm.conf" 15 PIDFILE="/var/run/php-fpm.pid" 16 LOCKFILE="/var/lock/php-fpm.lock" 17      18 RETVAL=0 19      20 start() { 21     [[ -x $BINFILE ]] || exit 5 22     [[ -f $CFGFILE ]] || exit 6 23         24     if [[ `ps aux | grep php-fpm: | grep -v grep | wc -l` -gt 0 ]]; then 25         echo "The php-fpm is already running." 26         return 1 27     fi 28         29     $BINFILE -t >/dev/null 2>&1 30         31     if [[ $? -ne 0 ]]; then 32         echo "The php-fpm configure has error." 33         return 1 34     fi 35         36     echo -n "Starting php-fpm......" 37     $BINFILE -y $CFGFILE -g ${PIDFILE} 38     RETVAL=$? 39     echo 40     [[ $RETVAL -eq 0 ]] && touch $LOCKFILE 41         42     return $RETVAL 43 } 44      45 stop() { 46     if [[ `ps aux | grep php-fpm: | grep -v grep | wc -l` -eq 0 ]]; then 47         echo "The php-fpm is not running." 48         return 1 49     fi 50         51     echo -n "Shutting down php-fpm......" 52         53     if [[ -f $PIDFILE ]]; then 54         kill -QUIT `cat ${PIDFILE}` 55     else 56         kill -QUIT `ps aux | grep php-fpm | awk '/master/{print $2}'` 57     fi 58         59     RETVAL=$? 60     echo 61     [[ $RETVAL -eq 0 ]] && rm -f $LOCKFILE $PIDFILE 62         63     return $RETVAL 64 } 65      66 restart() { 67     stop 68     sleep 1 69         70     while true 71     do 72         if [[ `ps aux | grep php-fpm: | grep -v grep | wc -l` -eq 0 ]]; then 73             start 74             break 75         fi 76         sleep 1 77     done 78         79     RETVAL=$? 80     echo 81         82     return $RETVAL 83 } 84      85 reload() { 86     if [[ `ps aux | grep php-fpm: | grep -v grep | wc -l` -eq 0 ]]; then 87         echo "The php-fpm is not running." 88         return 1 89     fi 90         91     echo -n $"Reloading php-fpm......" 92         93     if [[ -f $PIDFILE ]]; then 94         kill -USR2 `cat ${PIDFILE}` 95     else 96         kill -USR2 `ps aux | grep php-fpm | awk '/master/{print $2}'` 97     fi 98         99     RETVAL=$?100     echo101        102     return $RETVAL103 }104     105 case "$1" in106 start)107     start108     ;;109        110 stop)111     stop112     ;;113        114 restart)115     restart116     ;;117        118 reload)119     reload120     ;;121        122 *)123     echo "Usage: service php-fpm {start|stop|restart|reload}"124     RETVAL=1125 esac126     127 exit $RETVAL

  下面運行crm命令,進入crm命令行模式,非特殊注明情況下操作均在此模式下進行,在一臺機器上操作即可。

    

  3.關閉corosync的stonith檢測和仲裁:

1 configure                             //進入配置菜單2 property stonith-enabled=false        //關閉stonith設備3 property no-quorum-policy=ignore     //關閉仲裁設備4 verify                               //語法檢測5 commit                               //提交

  4.添加資源(configure菜單下):

1 primitive mydrbd ocf:drbd params drbd_resource=web op monitor role=Master interval=20s timeout=30s op monitor role=Slave interval=30s timeout=20s op start timeout=240s op stop timeout=240s     //定義drbd資源2 primitive myfile Filesystem params device="/dev/drbd0" directory="/mydata" fstype="ext4" op monitor interval=30s timeout=60s op start timeout=60s op stop timeout=60s                           //定義文件系統資源3 primitive myip IPaddr params ip=192.168.19.150 op monitor interval=30s timeout=60s          //定義VIP資源4 primitive mynginx lsb:nginx op monitor interval=30s timeout=20s                            //定義nginx資源5 primitive mysql lsb:mysqld op monitor interval=30s timeout=60s                             //定義mysqld資源6 primitive myphp lsb:php-fpm                                                                //定義php-fpm資源7 group myserver myfile myip mynginx myphp mysql                                             //定義資源組8 verify                                                                                     //語法檢測,如沒問題,先不要提交

  5.添加各種約束:

1 ms ms_mydrbd mydrbd meta master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=True      //drbd主從資源配置2 colocation myfile_with_mydrbd_master inf: myfile ms_mydrbd:Master                                     //定義排列約束,myfile要和drbd的Master節點在一起3 colocation mysql_with_myfile inf: mysql myfile                                                        //mysql要和myfile在一起4 order myfile_after_ms_mydrbd_master Mandatory: ms_mydrbd:promote myfile:start                         //定義順序約束,drbd主節點被提升,myfile才能啟動5 order myip_after_myfile Mandatory: myfile myip6 order mynginx_after_myip Mandatory: myip mynginx7 verify8 commit

  6.提交之后,可以看到,所有資源已經運行在coro2,打開http://192.168.19.150進行操作也沒問題:

    

  7.下面操作讓coro2成為備用節點??梢钥吹?,資源全部轉移到coro1上了,打開http://192.168.19.150進行各種操作仍然OK:

1 cd ..2 node standby coro2           //coro2成為備用----------------------------- 等待5秒3 node online coro2            //重新上線4 status                       //查看狀態

    

  至此,實驗全部結束。因為時間原因,很多細節有待完善,歡迎大家提供寶貴意見,謝謝! QQ:82800452


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲图中文字幕| 欧美性高跟鞋xxxxhd| 亚洲午夜性刺激影院| 国产噜噜噜噜久久久久久久久| 国内免费久久久久久久久久久| 亚洲一区二区三区四区在线播放| 久久久久www| 日韩免费在线电影| 亚洲在线第一页| 日韩精品在线私人| 国产日韩视频在线观看| 91精品国产91久久久久久久久| 亚洲加勒比久久88色综合| 97成人精品视频在线观看| 国产又爽又黄的激情精品视频| 2021久久精品国产99国产精品| 亚洲女在线观看| 国内揄拍国内精品少妇国语| 亚洲夜晚福利在线观看| 色偷偷亚洲男人天堂| 国产日韩专区在线| 亚洲在线免费看| 欧美最猛性xxxxx(亚洲精品)| 欧美超级乱淫片喷水| 亚洲国产欧美一区二区三区久久| www.亚洲一区| 日韩成人网免费视频| 日韩欧美国产中文字幕| 亚洲精品中文字幕女同| 成人在线视频网| 久久精品最新地址| 欧美日韩在线一区| 亚洲精品小视频在线观看| 九九九热精品免费视频观看网站| 欧美日韩精品在线| 亚洲女人天堂视频| 久久久精品国产亚洲| 色偷偷亚洲男人天堂| 精品久久久久久国产91| 狠狠色狠狠色综合日日五| 国产手机视频精品| 欧美成人免费在线观看| 国产主播喷水一区二区| 亚洲小视频在线| 亚洲国产成人精品女人久久久| 一本大道久久加勒比香蕉| 欧美激情精品久久久久久久变态| 国产99久久精品一区二区| 国产精品青青在线观看爽香蕉| 国产日韩一区在线| 欧美日韩一区二区免费视频| 色先锋久久影院av| 亚洲欧美一区二区三区在线| 欧美性极品xxxx娇小| 91在线视频成人| 国产日韩av在线播放| 亚洲欧美国产另类| 97香蕉超级碰碰久久免费的优势| 中文字幕亚洲欧美日韩在线不卡| 亚洲电影免费观看高清完整版在线| 日韩美女中文字幕| 亚洲综合小说区| 欧美精品电影免费在线观看| 亚洲国产精品va在线看黑人| 亚洲另类图片色| 91久久嫩草影院一区二区| 中文字幕视频一区二区在线有码| 精品免费在线观看| 国产+成+人+亚洲欧洲| 亚洲国产成人久久| 久久手机精品视频| 国产精品主播视频| 国产精品福利在线观看| 91久久久久久久一区二区| 欧美床上激情在线观看| 深夜福利亚洲导航| 原创国产精品91| 欧美极品少妇xxxxⅹ喷水| 欧美电影第一页| 不卡av电影院| 亚洲一区二区三区sesese| 日韩精品极品毛片系列视频| 亚洲欧美综合区自拍另类| 一个色综合导航| 国产亚洲精品久久久久久777| 国产精品国产福利国产秒拍| 色多多国产成人永久免费网站| 欧美日韩性视频在线| 国产色婷婷国产综合在线理论片a| 久久九九亚洲综合| 欧美怡春院一区二区三区| 日韩av片免费在线观看| 日韩中文字幕在线| 久久理论片午夜琪琪电影网| 国产精品日日做人人爱| 亚洲色图偷窥自拍| 日韩极品精品视频免费观看| 亚洲跨种族黑人xxx| 性欧美视频videos6一9| 在线观看91久久久久久| 亚洲va久久久噜噜噜久久天堂| 日韩精品免费视频| 日本一区二区三区四区视频| 成人国产精品av| 亚洲精品成a人在线观看| 欧美日韩国产区| 欧美性受xxxx白人性爽| 久久久中文字幕| 国产一区二区三区免费视频| 亚洲最新av在线网站| 激情久久av一区av二区av三区| 国产亚洲精品久久久久久| 不卡av在线播放| 国产精品wwww| 午夜精品久久久99热福利| 久久精品色欧美aⅴ一区二区| 欧美刺激性大交免费视频| 黄色精品一区二区| 亚洲性无码av在线| 福利二区91精品bt7086| 国产精品久久久久国产a级| 亚洲免费中文字幕| 亚洲另类欧美自拍| 欧美黑人巨大精品一区二区| 中文字幕最新精品| 欧美在线观看网站| 色悠久久久久综合先锋影音下载| 欧美激情一级精品国产| 日韩中文在线视频| 97成人精品视频在线观看| 亚洲精品自拍第一页| 国产精品丝袜白浆摸在线| 一区二区三区视频免费在线观看| 欧美久久精品午夜青青大伊人| 曰本色欧美视频在线| 国产精品电影久久久久电影网| 91精品国产乱码久久久久久久久| 国产精品黄页免费高清在线观看| 成人h片在线播放免费网站| 福利精品视频在线| 中文字幕亚洲欧美日韩高清| 亚洲免费视频网站| 91成人在线视频| 韩国精品美女www爽爽爽视频| 久久久久久网站| 国产精品96久久久久久又黄又硬| 日韩欧美国产骚| 亚洲一区美女视频在线观看免费| 国产欧美va欧美va香蕉在| 国外成人性视频| 亚洲最大的免费| 欧美国产第一页| 国产精品白嫩美女在线观看| 精品久久久久久中文字幕一区奶水| 欧美日韩激情小视频| 欧洲亚洲免费视频| 精品丝袜一区二区三区| 日韩美女主播视频| 国产自产女人91一区在线观看| 亚洲美女av在线播放| 欧美成人在线免费视频| 国产欧美一区二区| 日韩欧美有码在线| 最近2019中文字幕大全第二页|