日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于corosync和NFS服务器实现LNMP的高可用

發布時間:2025/3/20 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于corosync和NFS服务器实现LNMP的高可用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、實驗拓撲

?二、實驗說明

? 該試驗是基于corosync和NfS服務器實現了LNMP的高可用,當一個節點出現故障時,所有的資源會自動轉移到另一節點,從而能夠正常提供服務

三、實驗準備

  • 1.修改兩臺主機名使其uname?-n的保持一致?
  • ???????#vim?/etc/sysconfig/network?修改為?hostname=node1?
  • ???????#hostname?node1?
  • ???????#unanme?-n?
  • ?2.修改hosts文件,因為高可用集群服務的解析依賴與自己的hosts文件?
  • ???????編輯Director1、2的/etc/hosts文件,添加如下內容?
  • ???????172.16.29.1??node1?
  • ???????172.16.29.2??node2?
  • ?3.配置系統時間,使兩臺的時間保持一致?
  • ?4.配置Director的ssh,以實現雙機互信?
  • ??????node1?
  • ???????#ssh-keygen?-t?rsa?
  • ???????#ssh-copy-id?-i?.ssh/id_rsa.pub?root@node2?
  • ???????#ssh?node2?'ifconfig'?測試連接?
  • ????node2?
  • ???????#ssh-keygen?-t?rsa?
  • ???????#ssh-copy-id?-i?.ssh/id_rsa.pub?root@node1?
  • ???????#ssh?node1?'ifconfig'?測試連接?
  • 四、實驗步驟

    配置NFS共享服務

  • .創建邏輯卷?
  • #fdisk?/dev/sda??
  • #partprobe?/dev/sda??
  • #pvcreate?/dev/sda5??
  • #vgcreate?myvg?/dev/sda5???
  • #lvcreate?-n?mylv?-L?10G?myvg??
  • #mke2fs?-j?/dev/myvg/mylv??
  • 2.創建共享目錄并開機自動掛載邏輯卷?
  • #mkdir?/mydata???????????????????//創建共享目錄??
  • #vim?/etc/fstab??????????????????//開機自動掛載??
  • ?????/dev/myvg/mydata????????/mydata?????????ext3????defaults????????0?0??
  • 3.添加mysql用戶?
  • #groupadd?-g?306?-r?mysql??
  • useradd?-g?mysql?-r?-u?306?mysql??
  • #chown?mysql:mysql?/mydata???????//修改共享目錄的屬主屬組為mysql??
  • 4.添加共享?
  • ?#vim?/etc/exports?????????????????
  • ??/mydata????172.16.29.1(rw,no_root_squash)?172.16.29.2(rw,no_root_squash)??
  • #exportfs?-ra?????????????????????//導出共享目錄???
  • #service?nfs?start?????????????????//啟動nfs服務??
  • #chkconfig?nfs?on???????????????????//開機自動啟動??
  • #showmount?-d?localhost??????????????????//查看是否導出成功??
  • ??
  • 配置node1和node2的LNMP

    創建用戶和掛載目錄

  • 添加用戶,用戶UID和NFS服務器上的mysql用戶a的UID相同?
  • #groupadd?-g?306?-r?mysql??
  • ?#usradd?-g?mysql?-r?-u?306?mysql??
  • 2、創建目錄并掛載?
  • ?#mkdir?-pv?/mydata/data??
  • #chown?-R?mysql:mysql?/mydata/data??
  • #mount?-t?nfs?172.16.26.1:/sharedata??/mydata/data??
  • 安裝mysql 在這里需要說明一下,在節點node1上執行如下步驟后,在節點node2上不需要初始化mysql即可啟動。
  • #tar?xf?mysql-5.5.20-linux2.6-i686?-C?/usr/local??
  • #?cd??/usr/local??
  • #ln?-sv?mysql-5.5.20-linux2.6-i686??mysql?//創建連接???
  • #chown?-R?mysql:mysql?.??
  • #cp?support-files/my-large.cnf??/etc/my.cnf??//配置文件??
  • #vim?/etc/my.cnf???
  • ?????在[mysqld]處?添加datadir=/mydata/data????//添加數據存放位置??
  • #scripts/mysql_install_db?--user=mysql?--datadir=/mydata/data?//初始化Mysql??
  • #chown?-R?root?.??
  • #cp?support-files/mysql.server??/etc/rc.d/init.d/mysqld?//提供mysql腳本??
  • #servie?mysqld?start??
  • #/usr/local/mysql/bin/mysql????????//啟動并測試mysql是否可用??
  • #service?mysqld?stop?????????????????????//必須關閉,否則在節點2上無法啟動??
  • #scp?/etc/my.cnf?node2:/etc/my.cnf???????????//把mysql的配置文件復制到node2上??
  • #scp?/etc/rc.d/init.d/mysqld?node2:/etc/rc.d/init.d/mysqld??//復制服務腳本??
  • 安裝nginx

  • 1.解決依賴關系???
  • #yum?-y?groupinstall?"Development?Libraries"???
  • #yum?-y?install?pcre-devel???
  • 2.添加用戶,實現以之運行nginx服務進程???
  • #?groupadd?-r?nginx???
  • #?useradd?-r?-g?nginx?-s?/bin/false?-M?nginx???
  • 3、編譯安裝???
  • #tax?xf?nginx-1.0.4.tar.gz???
  • #cd?nginx-1.0.4???
  • #./configure?\???
  • ??--prefix=/usr?\???
  • ??--sbin-path=/usr/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-pcre???
  • #make?&&?make?install???
  • 提供nginx的服務腳本,腳本內容這里就不再給出
  • #vim /etc/rc.d/init.d/nginx
  • #?chmod?+x?/etc/rc.d/init.d/nginx?
  • #service?nginx?start?
  • 安裝php

  • php所依賴的包,使用rpm?-Uvh升級安裝?
  • libmcrypt-2.5.8-4.el5.centos.i386.rpm?
  • libmcrypt-devel-2.5.8-4.el5.centos.i386.rpm?
  • mhash-0.9.9-1.el5.centos.i386.rpm?
  • mhash-devel-0.9.9-1.el5.centos.i386.rpm?
  • libevent-2.0.17-2.i386.rpm????/memecached?
  • libevent-devel-2.0.17-2.i386.rpm?
  • mcrypt-2.6.8-1.el5.i386.rpm?
  • #?tar?xf?php-5.3.10.tar.bz2?
  • #?cd?php-5.3.10?
  • #./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/php\
  • ?--with-config-file-scan-dir=/etc/php?--with-bz2?--with-curl??\
  • #?make?
  • #?make?test?
  • #?make?intall?
  • 為php提供配置文件:?
  • #?cp?php.ini-production?/etc/php/php.ini?
  • ?
  • 為php-fpm提供Sysv?init腳本,并將其添加至服務列表:?
  • #?cp?sapi/fpm/init.d.php-fpm??/etc/rc.d/init.d/php-fpm?
  • #?chmod?+x?/etc/rc.d/init.d/php-fpm?
  • #?chkconfig?--add?php-fpm?
  • #?chkconfig?php-fpm?on?
  • ?
  • 為php-fpm提供配置文件:?
  • #?cp?/usr/local/php/etc/php-fpm.conf.default?/usr/local/php/etc/php-fpm.conf??
  • ?
  • 編輯php-fpm的配置文件:?
  • #?vim?/usr/local/php/etc/php-fpm.conf?
  • 配置pm.的相關選項為你所需要的值,并啟用pid文件(如下最后一行):?
  • pm.max_children?=?50?
  • pm.start_servers?=?5?
  • pm.min_spare_servers?=?2?
  • pm.max_spare_servers?=?8?
  • pid?=?/usr/local/php/var/run/php-fpm.pid??
  • ?
  • 接下來就可以啟動php-fpm了:?
  • #?service?php-fpm?start?
  • ?
  • 使用如下命令來驗正(如果此命令輸出有中幾個php-fpm進程就說明啟動成功了):?
  • #?ps?aux?|?grep?php-fpm?
  • 整合nginx和php

  • 1、編輯/etc/nginx/nginx.conf,啟用如下選項:?
  • location?~?\.php$?{?
  • ????????????root???????????html;?
  • ????????????fastcgi_pass???127.0.0.1:9000;?
  • ????????????fastcgi_index??index.php;?
  • ????????????fastcgi_param??SCRIPT_FILENAME??/scripts$fastcgi_script_name;?
  • ????????????include????????fastcgi_params;?
  • ????????}?
  • ?
  • 2、編輯/etc/nginx/fastcgi_params,添加如下行:?
  • fastcgi_param??SCRIPT_FILENAME????$document_root$fastcgi_script_name;?
  • ?fastcgi_param SERVER_SOFTWARE nginx;
  • 并在所支持的主頁面格式中添加php格式的主頁,類似如下:?
  • location?/?{?
  • ????????????root???html;?
  • ????????????index??index.php?index.html?index.htm;?
  • ????????}???????
  • #?service?nginx?reload? //重新載入nginx的配置文件?
  • 3、在/usr/html新建index.php的測試頁面,測試php是否能正常工作:?
  • #vim /user/html/inde.php
  • <?php?
  • phpinfo();?
  • ?>?
  • 在兩個節點上分別配置LNMP后,測試成功如下圖所示

    測試成功后,關閉所有服務,并卸載mysql

  • #?service?nginx?stop?
  • #?service?mysqld?stop?
  • #?service?php-fpm?stop?
  • #?umount?/mydata/data?
  • 安裝corosync

  • ?cluster-glue-1.0.6-1.6.el5.i386.rpm?????libesmtp-1.0.4-5.el5.i386.rpm??
  • cluster-glue-libs-1.0.6-1.6.el5.i386.rpm??
  • resource-agents-1.0.4-1.1.el5.i386.rpm??
  • corosync-1.2.7-1.1.el5.i386.rpm???????????pacemaker-1.1.5-1.1.el5.i386.rpm??
  • corosynclib-1.2.7-1.1.el5.i386.rpm????pacemaker-cts-1.1.5-1.1.el5.i386.rpm??
  • heartbeat-3.0.3-2.3.el5.i386.rpm??????pacemaker-libs-1.1.5-1.1.el5.i386.rpm??
  • heartbeat-libs-3.0.3-2.3.el5.i386.rpm??
  • #yum?-y?--nogpgcheck?localinstall?*.rpm??
  • #?cd?/etc/corosync???
  • ???#?cp?corosync.conf.example?corosync.conf???
  • ???#?vim?corosync.conf??添加如下內容???
  • ????service?{???
  • ver:??0???
  • name:?pacemaker???
  • #?use_mgmtd:?yes???
  • ?????}???
  • ????aisexec?{???
  • user:???root???
  • group:??root???
  • ???????}???
  • ?????并設定此配置文件中?bindnetaddr后面的IP地址為你的網卡所在網絡的網絡地址???
  • ?????我們這里設定為?bindnetaddr:172.16.0.0???
  • ????????to_logfile:?yes?????
  • ????????to_syslog:?no??????//關閉系統日志文件???
  • ???????logfile:?/var/log/cluster/corosync.log???
  • ???????secauth:?on?????????//啟用認證???
  • #?corosync-keygen????????//生成節點間的密鑰文件???
  • #?scp?-p?corosync?authkey??node2:/etc/corosync/???//復制文件到Director2上???
  • #?mkdir?/var/log/cluster??????????????????????????//創建日志所用到的目錄???
  • #?ssh?node2??'mkdir?/var/log/cluster'???
  • 配置集群的工作屬性

  • 修改忽略quorum不能滿足的集群狀態檢查:?
  • #?crm?configure?property?no-quorum-policy=ignore?
  • 禁用stonith?
  • #?crm?configure?property?stonith-enabled=false?
  • 添加資源

  • #crm?
  • crm(live)#configure?
  • primitive?mynfs?ocf:heartbeat:Filesystem?\?
  • ????params?device="172.16.26.1:/sharedata"?\
  • directory="/mydata/data"?fstype="nfs"?\?
  • ????op?start?interval="0"?timeout="60s"?\?
  • ????op?stop?interval="0"?timeout="60s"?
  • primitive?mysqld?lsb:mysqld?
  • primitive?vip?ocf:heartbeat:IPaddr?\?
  • ????params?ip="172.16.200.1"?
  • colocation?mysqd_and_mynfs_vip?inf:?mysqld?mynfs?vip?
  • order?mysqld_after_mynfs?inf:?mynfs?mysqld:start?
  • order?mysqld_after_vip?inf:?vip?mysqld?
  • 使用crm_mon -1 查看,結果如下圖所示

    然后查看node2節點的端口如下圖,證明資源添加生效

    在瀏覽器里輸入VIP 查看結果如下圖所示

    現在模擬node2出現了故障,則所有的資源都會轉移到節點node1上

  • #crm?node?standby? //讓節點二變成從節點

  • 轉載于:https://blog.51cto.com/sxhxt/960606

    總結

    以上是生活随笔為你收集整理的基于corosync和NFS服务器实现LNMP的高可用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。