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