nginx基礎配置,高可用,fence機制,數據的同步

nginx安裝在server1–172.25.254.1
server2-172.25.254.2 和server3-172.25.254.3爲服務器

1:nginx官網下在安裝包

1.1:nginx-1.10.1.tar.gz

tar zxf nginx-1.10.1.tar.gz 

解壓完成後進入到解壓後的目錄

1.2編輯源文件nginx-1.10.1/auto/cc/gcc和nginx-1.10.1/src/core/nginx.h

vim  nginx-1.10.1/auto/cc/gcc
178 # debug
179 #CFLAGS="$CFLAGS -g"
##編譯時不需要debug,du -sh /usr/local/nginx佔內存更小

這裏寫圖片描述

vim nginx-1.10.1/src/core/nginx.h
 14 #define NGINX_VER          "nginx" 
##curl查看時不顯示nginx版本號

這裏寫圖片描述

1.3編譯

./configure --prefix=/usr/local/nginx --with-http_ssl_module   --with-http_stub_status_module ##指定路徑和ssl模塊,編譯過程中根據報錯缺那些依賴包安裝就行
yum install openssl-devel  zlib-devel prce-devel
make && make install ##安裝

4:將nginx啓動腳本鏈接到正常位置(非必要做法,只是爲了方便)

/usr/local/nginx/conf/nginx.conf ##主配置文件
/usr/local/nginx/sbin/nginx ##主程序

 ln -s /usr/local/nginx/sbin/nginx  /usr/sbin/
 ##/usr/local/nginx/sbin/nginx這個二進制可執行文件是啓動nginx服務的,加入環境變量中,就可以使用了
 nginx   ##啓動nginx服務  (注意端口衝突)
 nginx -t ##查看nginx配置文件是否有錯
 nginx -s reload ##重新加載nginx文件
 nginx -s stop  ##停止nginx服務

nginx啓動以後,瀏覽器檢測
這裏寫圖片描述

5:編輯nginx主配置文件vim /usr/local/nginx/conf/ndinx.conf

vim /usr/local/nginx/conf/ndinx.conf
--->>
2 # user  nobody; nginx服務的所有人所有組
ps aux  ##查看該進程,顯示如下

這裏寫圖片描述

useradd nginx ##新建nginx用戶
id nginx
uid=501(nginx) gid=501(nginx) groups=501(nginx)
vim /usr/local/nginx/conf/ndinx.conf
--->>
   user  nginx nginx;
nginx -s reload
ps aux  ##再次查看

這裏寫圖片描述

vim /usr/local/nginx/conf/ndinx.conf

     2  user  nginx nginx;
     3  worker_processes  2;   ##工作核心,根據服務器cpu核數來設定,也可以調用auto函數自動匹配,指定兩個cpu進程
     4  worker_cpu_affinity 01 10; ##默認沒開啓,分別代表兩個邏輯cpu,01爲1,10爲2,我們只有兩個cpu工作
ps aux查看進程

這裏寫圖片描述
這裏寫圖片描述

 13 events {
 14     worker_connections  65535;  鏈接文件數默認太少該爲65535,這裏改完並不生效,還要配置其他文件
 15 }

這裏寫圖片描述

sysctl -a | grep file    ##查看系統文件系統自身所能支持的最大文件數
vim /etc/security/limits.conf
su - nginx
ulimit  -n  查看爲65535表示改過來了

這裏寫圖片描述
這裏寫圖片描述

負載均衡

  2 user  nginx nginx;
  3 worker_processes  2;
  4 worker_cpu_affinity 01 10;

 13 events {
 14     worker_connections  65535;
 15 }
 16 
 17 
 18 http {
 19     upstrean westos{
 20         server 172.25.254.2:80;
 21         server 172.25.254.3:80;
 22    }

 121         server {
 122            listen 80;
 123            server_name www.westos.org;
 124            
 125            location /{
 126                 proxy_pass http://westos;
 127         }
 128    }

-------------------------
nginx -t   ##檢測語法錯誤
nginx -s reload  ##重新加載nginx服務

瀏覽器所在主機添加本地解析/etc/hosts

172.25.254.1 www.westos.org
curl www.westos.org #測試,默認算法爲rr輪叫

這裏寫圖片描述

端口映射:改服務器2的httpd端口爲8080

vi /etc/httpd/conf/httpd.conf
 --->>136 Listen 8080
/etc/init.d/httpd restart

nginx主機配置文件

vim /usr/local/nginx/conf/ndinx.conf

 18 http {
 19     upstream westos{
 20         server 172.25.254.2:8080;
 21         server 172.25.254.3:80;
 22    }
nginx -s reload

真機測試
這裏寫圖片描述

nginx負載均衡健康檢查

當服務器2和3都掛了的情況下自己服務
nginx主機配置http服務端口爲8080(避免端口衝突)

vim /etc/httpd/conf/httpd.conf

135 #Listen 12.34.56.78:80
136 Listen 8080

vim /usr/local/nginx/conf/nginx.conf

 18 http {
 19     upstream westos{
 20         server 172.25.254.2:8080;
 21         server 172.25.254.3:80;
 22         server 127.0.0.1:8080 backup;
 23    }
130         server {
131            listen 8080;
132            server_name localhost;
133            charset utf-8;
134 
135            location /{
136                 root /backup;
137                 index index.html;
138         }
139    }    
mkdir /backup
vim /backup/index.html
 ---<h1>服務器正在維護...</h1>
 nginx -s reload

down掉後臺兩臺服務器,測試

[root@host2 ~]# /etc/init.d/httpd stop
[root@host3 ~]# /etc/init.d/httpd stop

這裏寫圖片描述

nginx負載均衡算法,默認情況下是rr輪叫

實驗前開啓兩條熱愛服務器http服務

#1.least_conn算法,那臺服務器壓力小,選擇那臺服務器處理數據請求,這個實驗效果不太明顯

這裏寫圖片描述

#2:ip_hash鏈接分配,同一個ip負載均衡新的後端服務器

這裏寫圖片描述

#3:hash $request_uri consistent模塊cdn發來的數據包都是同一個ip,這個模塊根據ip來負載均衡
    18  http {
    19      upstream westos{
    20      hash $request_uri consistent;
    21      server 172.25.254.2:8080;
    22      server 172.25.254.3:80;
    23      #server 127.0.0.1:8080 backup;
    24     }
#4:sticky模塊,版本最好低些,這裏的版本就ok,這個模塊主要用來cookies緩存:nginx-sticky-module-ng.tar.gz
mv /usr/local/nginx/conf/nginx.conf /mnt
tar zxf nginx-sticky-module-ng.tar.gz
rm -fr /usr/local/nginx
rm -fr /root/nginx-1.10.1
tar /root/nginx-1.10.1.tar.gz 
cd /root/nginx-1.10.1
vim /root/nginx-1.10.1/auto/cc/gcc
vim /root/nginx-1.10.1/src/core/nginx.h
##同之前的操作
編譯:./configure --prefix=/usr/local/nginx --with-http_ssl_module   --with-http_stub_status_module --add-module=/root/nginx-sticky-module-ng
yum install openssl-devel  zlib-devel prce-devel
make && make install ##安裝

ln -s /usr/local/nginx/sbin/nginx  /usr/sbin/
mv  /mnt/nginx.conf /usr/local/nginx/conf/
nginx 
vim /usr/local/nginx/conf/nginx.conf
---->18 http {
     19     upstream westos{
     20     sticky;
    21     server 172.25.254.2:8080;
    22     server 172.25.254.3:80;
    23     #server 127.0.0.1:8080 backup; 不支持
    24     }

nginx -s reload

這裏寫圖片描述

二:高可用

1.實驗前改算法爲rr默認的

vim /usr/local/nginx/conf/nginx.conf
---->18 http {
     19     upstream westos{
     20     #sticky;
    21     server 172.25.254.2:8080;
    22     server 172.25.254.3:80;
    23     #server 127.0.0.1:8080 backup; 不支持
    24     }

nginx -s reload

host1 和host4安裝ricci 設置密碼 啓動服務,設置開機啓動

yum install ricci
passwd ricci
-->>123abc
/etc/init.d/ricci start
chkconf ricci on

host1安裝luci

yum install luci
/etc/init.d/luci start
chkconf luci on

host1和host4要有自己和彼此的解析
這裏寫圖片描述
這裏寫圖片描述
瀏覽器所在主機也要有host1和host4以及自己的解析
這裏寫圖片描述

瀏覽器輸入

https://172.25.254.1:8084

這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
ok
這裏寫圖片描述

2基本配置

1.Nginx 主機 host1 安裝 ricci,設置密碼,開機啓動,安裝 luci 工具,編寫 nginx 啓動
腳本,賦予 x 權限放到/etc/init.d/目錄下,
2.把 nginx 主機的/uar/local/nginx 目錄給 host4 考一份/usr/local/nginx,
編寫啓動腳本,從/etc/init.d/下複製一份http的啓動腳本,修改修改如下

這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述

3進入圖形化管理

3.1真機瀏覽器:https://172.25.254.1:8084 ,顯示以下界面,沒有則沒配置好
這裏寫圖片描述
3.2create 創建cluster
這裏寫圖片描述
3.3Failovers Domains –Add
這裏寫圖片描述
這裏寫圖片描述
3.4Resources
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
3.5Servers Groups
添加IP Address(vip) 和Script 腳本(nginx啓動腳本)
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
注意狀態Status nginx前邊有紅點表示有問題
3.6返回節點Node看下
這裏寫圖片描述

4,如果前邊正常的化會看到以下:Host1和host4查看 clustat ,vip再host4上

這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述

四.高可用實驗

Down掉host1(使其內核崩潰),再次測試vip 移動到了host1上,同時httpd服務正常
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述

五.fence機制,當某一臺nginx服務器出現問題時會強制斷電

1客戶主機(http請求主機安裝)
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
2.配置fence:

命令:fence_virtd -c

把中括號內的內容複製到後邊回車即可
這裏寫圖片描述
Interface [virbr0]: br0 ##特殊
這裏寫圖片描述
輸入y保存退出
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述

六.在瀏覽器上設置fence連接:選擇多播模式

這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
Host4方法同上,點擊node節點host4,進去的操作同上,uuid到virt-manger中查看或者root用戶身份virsh list –uuid

測試

這裏寫圖片描述

echo c >/proc/sysrq-trigger   ##內核崩潰

這裏寫圖片描述
這裏寫圖片描述
自動重啓查看
這裏寫圖片描述

七.管理存儲~~LVM- –ISCSI存儲

1.Ext4:本地文件系統,數據不同步

1.1
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述

 38 <target iqn.2018-04.com.example:host3.target1>
 39         backing-store /dev/vdb
 40         initiator-address 172.25.254.1
 41         initiator-address 172.25.254.4
 42 </target>

這裏寫圖片描述
1.2.在host1和host4上同時做:

yum install -y iscsi-initiator-utils.x86_64
iscsiadm -m discovery -t st -p 172.25.254.3 ##查看host3上iscsi的可用
iscsiadm -m node -l             ##連接
cat /proc/partitions    ##查看

這裏寫圖片描述
這裏寫圖片描述
1.3
這裏寫圖片描述

注意Host1創建完成後,host4查看,沒同步說明有問題

這裏寫圖片描述
mkfs.ext4 /dev/clustervg/demo
host1和host4掛載到各自的mnt上,host1再/mnt裏邊新建文件,host4是不會同步的,除非卸載重新掛上

2數據庫實例

(1)host1和host4安裝mysql-server,啓動數據庫,將邏輯卷掛載到/mnt,cp -p /var/lib/mysql/* (除了mysql.sock) 到/mnt上(實際上數據被寫進邏輯卷中了),取消掛載後關閉數據庫再把mnt掛載到/var/lib/mysql上,ll -d /var/lib/mysql/所有人所有組爲root,設置所有人所有組爲mysql
(2)取消掛載host1和host2的邏輯卷掛載,關閉瀏覽器端配置:掛載邏輯捲到/var/lib/mysql/上,配置以下

a設置掛載參數
這裏寫圖片描述

b添加虛擬ip
這裏寫圖片描述
c.添加mysql啓動腳本
這裏寫圖片描述
d.add failover domain
這裏寫圖片描述
e.添加source group
依次添加vip,文件系統,腳本,點擊提交Submit
f.點擊start,host1和host4重啓後,查看,正常工作
這裏寫圖片描述
這裏寫圖片描述
g.真機測試,以下報錯正常,數據庫沒授權
這裏寫圖片描述
Host1上進入mysql授權
mysql> create user westos@’172.25.254.51’ identified by ‘passwd’;
mysql> grant all on . to westos@’172.25.254.51’ identified by ‘passwd’;
再次測試:
這裏寫圖片描述

gfs:Gfs2 分佈式集羣鎖文件系統

Gfs2 分佈式集羣鎖文件系統(全局文件系統 )存儲server通過iscsi共享1,2主機掛載存儲,達到高可用.利用RHCS搭建GFS2高可用集羣文件系統,且保證兩個節點能夠同時對存儲設備進行讀寫訪問.
1.

clusvcadm -d mysql  ##關閉服務進行配置
mkfs.gfs2 -p lock_dlm -t westos_ha:mygfs2 -j 3 /dev/clustervg/demo
        //#若卡住不動 dd if=/dev/zero of=/dev/clustervg/demo bs=1024 count=1 

這裏寫圖片描述
2.
host1:
mount /dev/clustervg/demo /mnt
host4:
mount /dev/clustervg/demo /mnt

測試:此時在/mnt上建立一個文件會自動同步到server4上

3.接下來可使用HA進行掛載管理,爲了防止集羣壞掉影響文件系統使用。也可直接把路徑添加進開機fstab文件中實現開機自啓動。
這裏寫圖片描述

gfs2文件系統拉伸(說明數據同步)

(1)Host1上df -H:##已經使用的407M爲3個日誌文件佔用的
這裏寫圖片描述
(2) lvextend -L +2G /dev/clustervg/lab
gfs2_grow /dev/clustervg/lab
df -H

這裏寫圖片描述
(3)gfs2 日誌添加
Host1上:
gfs2_jadd -j 2 /dev/clustervg/demo ##增加兩個日誌,Host4上隨之改變
這裏寫圖片描述
這裏寫圖片描述

四.nginx集羣刪除

瀏覽器中:base1/base2 –>leave cluster ->delete
這裏寫圖片描述
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章