中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Nginx+Keepalived+iis+Memcached搭建高可用的集群服務

發布時間:2020-07-31 09:40:26 來源:網絡 閱讀:475 作者:明天_意外 欄目:系統運維

使用Nginx+Keepalived+iis+Memcached搭建高可用的集群服務
Nginx+Keepalived+iis+Memcached搭建高可用的集群服務
大致架構如上圖所示
1、設置Windows服務端
公司使用好多IIS作為web服務,其中在session共享哪里浪費了好長時間。
剛開始打算使用Sqlserver數據庫共享,后來發現IIS自帶session共享。
Nginx+Keepalived+iis+Memcached搭建高可用的集群服務
如上圖所示 在會話狀態中 連接字符串使用另外一臺服務器IIS服務的session即可,當然3臺4臺服務器也照樣可以設置,個人理解為只要能圍成一個圓它們就會互相共享,互相匯聚。設置方法,運行regedit → 打開注冊表 → 找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters節點 → 將 AllowRemoteConnection 的鍵值設置成“1”(1 為允許遠程電腦的連接,0 代表禁止)
親測有效
還有一個就是設置站點的時候,因為我們是一個iis上面有多個站點,平時使用就是下圖這樣的
Nginx+Keepalived+iis+Memcached搭建高可用的集群服務

新建一個站點,使用的是80端口,然后站點下面有好多的虛擬目錄或者是應用程序(在此必須設置為應用程序),因為我們是在磁盤中新建一個目錄然后在目錄下面放了好多的站點,因為程序寫的時候必須要在一級目錄,所以只能轉化為程序才能正常訪問。
回到正題題,因為現在用nginx做負載均衡,所以就涉及到Nginx的后端檢測模塊,在此建議一個站點就是一個網站,站點多了可以使用不同的端口,且不可像以上那樣,具體原因后面有詳細介紹。
以上就是windows系統設置的過程。
2、開始搭建Linux服務
首先是設置Nginx 這里用到了Nginx的反向代理模塊和后端server的健康狀態檢查模塊
1)、搭建nginx,關閉防火墻,關閉selinux重啟服務器
2)、因為需要用到后端檢測模塊是第三方模塊,所以需要編譯安裝Nginx
使用的Nginx版本為nginx-1.14.0.tar.gz,第三方模塊為nginx_upstream_check_module-master.zip
Nginx+Keepalived+iis+Memcached搭建高可用的集群服務
為什么使用nginx-1.14.0.tar.gz,因為第三方模塊里面check_1.14.0+.patch只看到了1.14的(最高的),如果使用新版本的話 怕是不支持
3)、先給Nginx打補丁
Nginx+Keepalived+iis+Memcached搭建高可用的集群服務
因為我的已經打過了。所有會這樣提示,而正常的提示是下圖:
Nginx+Keepalived+iis+Memcached搭建高可用的集群服務
出現如圖所示則表示打補丁成功
4)、編譯Nginx
首先直接安裝開發工具包組,后期編譯的時候出錯少
yum groupinstall Development-tools -y 這個等待時間較長
另外安裝:yum -y install perl-devel perl-ExtUtils-Embed 這個包平時沒用過,但是如果不安裝的話 編譯第三方模塊的時候會報錯,直接安裝了吧
Nginx編譯參數:
./configure --prefix=/usr/local/nginx1.14 --conf-path=/usr/local/nginx1.14/nginx.conf --error-log-path=/usr/local/nginx1.14/logs/error.log --http-log-path=/usr/local/nginx1.14/logs/access.log --with-http_stub_status_module --add-module=/home/nginx_upstream_check_module-master --with-http_gunzip_module --with-http_gzip_static_module --with-http_ssl_module --with-http_v2_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_secure_link_module --with-http_auth_request_module --with-http_sub_module --with-http_perl_module --with-perl_modules_path=/usr/local/nginx1.14/modules/
以上是nginx編譯參數,按照上面編譯夠了,具體不知道編譯安裝流程的可以百度或google下這里不再贅述
如果順利通過的話 則會在/usr/local/下面看到ngnx1.14的文件夾了
Nginx+Keepalived+iis+Memcached搭建高可用的集群服務
如圖所示
下面開始配置nginx,配置文件nginx.conf 建議先行備份nginx.conf.back
5)、配置nginx.conf
user www; 啟動nginx的時候用的用戶
worker_processes auto; 限制可支持auto,不用再寫cpu個數了

#error_log logs/error.log;
#error_log logs/error.log notice;
error_log logs/error.log info;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

#access_log  logs/access.log  main;
sendfile        on;
#tcp_nopush     on;
keepalive_timeout  65; 設置超時時間

gzip  on;
upstream ERP {  這里定義了后端服務器 一共兩臺,但是這都是使用的80端口(默認),后面需要修改
    ip_hash;
    server 192.168.3.100;
    server 192.168.0.229;
    check interval=3000 rise=2 fall=5 timeout=1000 type=http;  這里就使用到了剛打的補丁了,后端健康狀態檢查,在此建議設置為

Nginx+Keepalived+iis+Memcached搭建高可用的集群服務
一秒一次成功一次則成功,失敗一次則失敗,對于要求比較高的,建議可以再縮小都行,這里是可一個坑,如果設置的時間過長的話,刷新的時候會刷出錯誤頁面出來。因為本來已經停止的IIS在Nginx中還沒有給剔除掉,所以Nginx還會在這個時間段內,把請求調度給后端已經停止的Server
”簡單介紹下后端健康檢查這個模塊。這個模塊nginx_upstream_check_module-master.zip應該是淘寶做的,淘寶的tengine默認就支持此模塊,在其官網中有說明
Tengine是由淘寶網發起的Web服務器項目。它在Nginx的基礎上,針對大訪問量網站的需求,添加了很多高級功能和特性。Tengine的性能和穩定性已經在大型的網站如淘寶網,天貓商城等得到了很好的檢驗。它的最終目標是打造一個高效、穩定、安全、易用的Web平臺。
從2011年12月開始,Tengine成為一個開源項目,Tengine團隊在積極地開發和維護著它。Tengine團隊的核心成員來自于淘寶、搜狗等互聯網企業。Tengine是社區合作的成果,我們歡迎大家參與其中,貢獻自己的力量。“
參數的含義是:
interval:檢查請求的間隔時間。
fall(fall_count):在fall_count失敗檢查后,服務器被標記為關閉。
rise(rise_count):在rise_count成功檢查后,服務器被標記。
timeout:檢查請求的超時。
default_down:指定后端服務器的初始狀態,默認為關閉。
type:檢查協議類型:
tcp:一個簡單的TCP套接字連接并查看一個字節。
ssl_hello:發送客戶端SSL hello數據包并接收服務器SSL hello數據包。
http:發送http請求數據包,接收并解析http響應,以診斷上游服務器是否處于活動狀態。
mysql:連接到mysql服務器,接收問候響應以診斷上游服務器是否處于活動狀態。
ajp:發送AJP Cping數據包,接收并解析AJP Cpong響應,以診斷上游服務器是否處于活動狀態。
port:在后端服務器中指定檢查端口。它可以與原始服務器端口不同。默認端口為0,表示與原始后端服務器相同。在tengine-1.4.0之后添加此選項。

check_http_send "GET / HTTP/1.0\r\n\r\n";
而我沒有使用tengine,因為我弄了半個多小時就配置一個模塊命令,總是報錯,所以不得已只有開頭那里給nginx打補丁了....
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
location /nginxcon {
stub_status;
}
#access_log logs/host.access.log main;
location ^~ /XQZC {
proxy_pass http://ERP/XQZC;
}
location ^~ /BJ_CS {
proxy_pass http://ERP/BJ_CS;
}
location /status {
check_status;
access_log off;

allow SOME.IP.ADD.RESS;

       # deny all;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

還有兩項值得說明的
Nginx+Keepalived+iis+Memcached搭建高可用的集群服務
如下圖所示:
Nginx+Keepalived+iis+Memcached搭建高可用的集群服務
當然它會一直在檢查的
Nginx+Keepalived+iis+Memcached搭建高可用的集群服務
所以上面設置的 check interval=1000 rise=1 fall=1 timeout=1000 type=http; 時間間隔完全沒有問題呢
在此以上就是Nginx的完整配置,但是其中有一個非常大的問題,就是在檢查后端服務器的時候,因為這里只設置了80端口的http的健康檢查,而我們在一個網站里面又添加了好多的應用程序
那么問題來了:如果我們修改其中一個應用程序的時候(一下簡稱小網站),例如更新,勢必要停止此iis才能替換其中的一個小網站,如果停止了IIS則所有的session都會轉發到另外一臺服務器,而我們只是維護其中的一個小網站,加入說有10個小網站,那么剩下的9個是完全沒有問題的
這樣就造成了資源浪費
所有要修改為,一個小網站建立一個站點,使用不同的款口號
那么這樣的話 在維護一個小網站的時候只需要停止其中一個而不影響其他的,在定義Upstream的時候必須要按照端口號分開定義即可,那就變成下面這個樣子的
Nginx+Keepalived+iis+Memcached搭建高可用的集群服務
Nginx+Keepalived+iis+Memcached搭建高可用的集群服務

如圖所示,這樣就好多了,它也只檢測一個就好,這樣就成了下圖所示的
Nginx+Keepalived+iis+Memcached搭建高可用的集群服務
那個不能用 咱就停止那個................... 如此最好啊 呵呵...............
最后配置keepalived
這個就比較簡單了,直接yum安裝keepalived
layer 3層檢測:進行ICMP ping包檢測,確認主機是否存活,如果異常,則會該主機從服務器集群中剔除;
layer 4層檢測:進行端口檢測,例如80、3306等,端口不通時,將服務器從集群中剔除;
layer 7層檢測:這個就是基于應用的了,如http返回碼是否為200,確認主機是否正常。
在此我們使用第三個..
先說一下遇到的坑吧
1)、Nginx+Keepalived+iis+Memcached搭建高可用的集群服務

此處剛開始一直直接使用的命令,網上所有的教程都讓直接使用命令,
但是新版本的在此配置段好像不支持直接使用命令檢查了,也不知道是我設置的不對 還是真的不能了,所以在此使用腳本檢查,腳本內容還待優化,暫且內容如下:
Nginx+Keepalived+iis+Memcached搭建高可用的集群服務
keepalived健康檢查降權規則,默認檢查結果失敗,失敗就會降權,當然我們也可以修改配置文件為成功則降權的,暫且使用默認。如下圖:
Nginx+Keepalived+iis+Memcached搭建高可用的集群服務
如果兩個服務器都有vip的話 請繼續清空防火墻關閉selinux 就是他們引起的
備用keepalived直接復制過去主配置文件,修改 state和prioriy兩項即可

寫的有點著急了,不好的地方歡迎大家留言指正,謝謝!!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

梁河县| 喀喇沁旗| 曲沃县| 嫩江县| 道真| 元谋县| 清丰县| 阳东县| 余江县| 专栏| 正蓝旗| 江孜县| 壶关县| 宁南县| 柞水县| 丰原市| 丽水市| 五河县| 钦州市| 同心县| 黎城县| 军事| 东方市| 右玉县| 绥中县| 安吉县| 太湖县| 措美县| 临清市| 栾川县| 高邑县| 武定县| 定边县| 项城市| 佛教| 荔浦县| 买车| 绥芬河市| 体育| 博兴县| 兴隆县|