nginx+keepalived高可用性負載均衡

一、前言
nginx進程基于于Master+Slave(worker)多進程模型,自 身具有非常穩定的子進程管理功能。在Master進程分配模式下,Master進程永遠不進行業務處理,只是進行任務分發,從而達到Master進程的存 活高可靠性,Slave(worker)進程所有的業務信號都 由主進程發出,Slave(worker)進程所有的超時任務都會被Master中止,屬于非阻塞式任務模型。
Keepalived是Linux下面實現VRRP 備份路由的高可靠性運行件。基于Keepalived設計的服務模式能夠真正做到主服務器和備份服務器故障時IP瞬間無縫交接。二者結合,可以構架出比較穩定的軟件lb方案。
二、nginx+keepalived架構實戰
采用兩臺服務器做nginx主備,后端采用兩個realserver(可以隨意擴展),數據庫采用mysql主從(這里就不說主從的配置了!)
1、?架構圖如下:
Server?
ip
nginx master?
192.168.1.108
nginx backup
192.168.1.110
vip
192.168.1.100
real server1
192.168.1.105
real server2
192.168.1.103
2、?安裝配置
(1)、安裝keepalived(在nginx的mater和backup都安裝)
wget http://www.keepalived.org/software/keepalived-1.1.19.tar.gz
tar zxvf keepalived-1.1.19.tar.gz
cd keepalived-1.1.19
./configure --prefix=/usr/local/keepalived
make
make install
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
mkdir /etc/keepalived
cd /etc/keepalived/
配置nginx master的keepalived配置文件
[root@zhang1 keepalived]# cat /etc/keepalived/keepalived.conf
bal_defs {
notification_email {
jimo291@gmail.com
}
notification_email_from jimo291@gmail.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id test1
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
smtp_alert
authentication {
auth_type PASS
auth_pass 123
}
virtual_ipaddress {
192.168.1.100
}
}
配置nginx backup的keepalived配置文件
[root@zhang1 keepalived]# cat /etc/keepalived/keepalived.conf
bal_defs {
notification_email {
jimo291@gmail.com
}
notification_email_from jimo291@gmail.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id test2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 80
advert_int 1
smtp_alert
authentication {
auth_type PASS
auth_pass 123
}
virtual_ipaddress {
192.168.1.100
}
}
啟動keepalived!,查看虛擬IP是否綁定!
[root@zhang1 ~]# /etc/rc.d/init.d/keepalived start
Starting keepalived:?????????????????????????????????????? [?OK?]
[root@zhang1 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:29:65:b4:ed brd ff:ff:ff:ff:ff:ff
inet 192.168.1.108/24 brd 192.168.1.255 scope global eth0
inet 192.168.1.100/32 scope global eth0
inet6 fe80::20c:29ff:fe65:b4ed/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:29:65:b4:f7 brd ff:ff:ff:ff:ff:ff
4: sit0: <NOARP> mtu 1480 qdisc noop
link/sit 0.0.0.0 brd 0.0.0.0
紅色部分顯示IP已經加載過來了!
3、?nginx的安裝和配置
1、創建供Nginx使用的組和帳號:
/usr/sbin/groupadd www -g 48
/usr/sbin/useradd -u 48 -g www www
2、編譯安裝rewrite模塊支持包
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.7.tar.gz
tar zxvf pcre-7.7.tar.gz
cd pcre-7.7/
./configure
make && make install
cd ../
3、編譯安裝Nginx
wget http://sysoev.ru/nginx/nginx-0.7.64.tar.gz
tar zxvf nginx-0.7.64.tar.gz
cd nginx-0.7.64/
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_flv_module
make && make install
cd ../
4、備份默認nginx.conf配置文件
mv /usr/local/nginx/conf/nginx.conf? /usr/local/nginx/conf/nginx.old
5、配置nginx(兩個nginx配置一樣!)
[root@linux4 keepalived]# cat /usr/local/nginx/conf/nginx.conf
userwww???? www;
worker_processes 8;
pid/var/run/nginx.pid;
worker_rlimit_nofile 51200;
events
{
use epoll;
worker_connections????? 5120;
}
http
{
include?????????? mime.types;
default_type?application/octet-stream;
charset?gb2312;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
sendfile on;
tcp_nopush???????? on;
keepalive_timeout 60;
tcp_nodelay on;
gzip on;
gzip_min_length?1k;
gzip_buffers???????? 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types?????????? text/plain application/x-javascript text/css application/xml;
gzip_vary on;
upstream srtweb {
server?192.168.1.105:80;
server?192.168.1.103:80;
}
server {
listen 80;
server_name www.carl.com;
location /{
proxy_pass????? http://srtweb;
proxy_set_header Host?? $host;
proxy_set_header X-Real-IP????? $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
4、?測試
首先單獨對nginx測試看是否工作正常,(更改hosts文件來測試!)
其次對keepalived進行測試,停掉nginx master上的keepalived,看backup服務器是否接管!

本文出自 “第三方” 博客,請務必保留此出處http://2526575.blog.51cto.com/2516575/592218

轉載于:https://www.cnblogs.com/hnlihao/p/3547445.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/447984.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/447984.shtml
英文地址,請注明出處:http://en.pswp.cn/news/447984.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

白發變黑有訣竅

白發變黑發的有效方法 1、要遠離焦慮&#xff1a; 如果天天的憂愁、煩惱、焦慮&#xff0c;則可能引起脫發&#xff0c;焦慮壓抑的時間越長&#xff0c;脫發就會迅速的加快。不管工作如何忙碌&#xff0c;建議女性保持適當的運動量以及愉快的心情&#xff0c;頭發也會富有光…

經典監督學習方法

生成算法嘗試去找這個數據到底是怎么生成的&#xff08;產生的&#xff09;&#xff0c;然后再對一個信號進行分類。基于你的生成假設&#xff0c;哪個類別最有可能產生這個信號&#xff0c;這個信號就屬于那個類別。 判別模型不關心數據是怎么生成的&#xff0c;它只關心信號之…

Map 集合循環、遍歷的 四 種方式

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 package cn.jdbc.test; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry;/…

Ubuntu版本更新一路走來:朕就是這樣的漢子

今日&#xff0c;Ubuntu發布了最新的14.04版本。當然&#xff0c;業界對新版Ubuntu褒貶不一&#xff0c;為此我們回顧了Ubuntu版本更新歷史上幾個比較有代表性的版本&#xff0c;看看Ubuntu這一路走來究竟有什么變化。Ubuntu剛剛發布了最新的14.04版本&#xff0c;圍繞這一版本…

「2019紀中集訓Day7」解題報告

T1、小L的數列 給一個數列 \(\{f_i\}\)&#xff1a;\[ f_i \prod_{j 1}^{j \leq k} f_{i - j}^{b_j}, \ (i > k) \] 現在給定數列的前 \(k \ (k \le 200)\) 項及 \({b_i}\)&#xff0c;求第 \(n\) 項。 \(Sol\)&#xff1a; 注意到數列的任意一項 \(f_i \ (i > k)\)&am…

我想擁有一座莊園:“ 暮春三月,江南草長,雜花生樹,群鶯亂飛 ... ”

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 // 或許這個心愿是緣于少時讀的詩&#xff1a;其中大多是對于自然的期許和神往 ... // 亦或許是想太多的人大多都有這樣的心愿 ... 我想…

安裝Ubuntu 14.04后要做的5件事情

Ubuntu最新版本Ubuntu 14.04已經發布&#xff0c;它是一個長期支持版本&#xff08;LTS&#xff09;&#xff0c;提供軟件包和安全更新的服務周期為5年。本文為大家簡單介紹了Ubuntu 14.04版本新特性和安裝Ubuntu 14.04后需要做的5件事情&#xff0c;以供參考。Ubuntu目前是世界…

昨天,我的大學學習[2]

昨天&#xff0c;我的大學學習[2] 曾毅 誰能改變我的命運[大學二年級] 如果說大學一年級的時候是一種被動學習狀態&#xff0c;對計算機科學不能攬其全貌&#xff0c;那么進入大學二年級以后的學習便是比較有針對性的了&#xff0c;但這種轉變并非偶然&#xff0c;同樣也是經過…

VUE 項目 去除 input 框值 所有空格、vue 組件去除空格、input 去除空格

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1.以下所有方法 我都試過&#xff1a;不行。 str.trim(); //去掉首尾空格 str.replace(" ",""); //去除所有空格&…

性能優化之節流、防抖

1. 防抖&#xff1a; 由于dom操作極其昂貴&#xff0c;所以嘗試過多的dom操作有可能會將瀏覽器搞崩潰&#xff0c;比如onresize、onscroll這類事件操作&#xff1b;為了解決這個問題&#xff0c;引出防抖的概念&#xff08;某些代碼不可以在沒有間斷的情況下連續重復執行&#…

百萬用戶規模的系統如何擴展

摘要&#xff1a;系統擴展一直是個讓人頭疼的事情&#xff0c;MatinKleppmann通過本文分享了他自己的6條經驗&#xff0c;外加網友的一條建議&#xff0c;這些經驗對于擴展Twitter這樣規模的系統或許幫助不大&#xff0c;但是對于百萬用戶級別的系統擴展就另當別論了。 【編者…

springboot 項目輸出 sql 到控制臺、 SpringBoot 中 Mybatis 打印 sql

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 SpringBoot中Mybatis打印sql 如果使用的是 application.properties 文件&#xff0c;加入如下配置&#xff1a; logging.level.com.ex…

JS流程圖解決方案GoJS

GoJs簡介 一個實現交互類圖表&#xff08;比如流程圖&#xff0c;樹圖&#xff0c;關系圖&#xff0c;力導圖等等&#xff09;的JS庫 GoJS依賴于HTML5&#xff0c;所以請保證您的瀏覽器版本支持HTML5&#xff0c;當然還要加載這個庫。 首先個人建議先下載官方實例的 離線版本【…

VUE.JS 組件化開發實踐

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 前言 公司目前制作一個H5活動&#xff0c;特別是有一定統一結構的活動&#xff0c;都要碼一個重復的輪子。后來接到一個基于模板的活動…

Space Time Varying Color Palette

PDF Space Time Varying Color Palettes from Bo Zhou轉載于:https://www.cnblogs.com/Jedimaster/p/4941857.html

提升開發效率的十個工具

Git 之前也有過不少版本控制的工具。有好的&#xff0c;也有糟糕的。不過它們都或多或少地誤入歧途了。 這時候Git出現了。一旦你用上了這個神奇的工具&#xff0c;很難相像你還會碰到比它更好的了。 還沒用過Git&#xff1f;試一下吧。 Stack Overflow 真的&#xff0c;我沒…

Virtual Villagers 攻略

和大家分享一下這個游戲的攻略心得,希望對大家有幫助~~Puzzle 1 清潔水井&#xff08;難度&#xff1a;簡單&#xff09;將一個擁有Building技能的村民拖到水井上就可以了。Puzzle 2 房屋建設&#xff08;難度&#xff1a;簡單&#xff09;一開始會由一個掌握Building技能的村民…

input 框 去掉下面的提示文字、提示選項

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 我的一個輸入框總是有提示文字&#xff1a; 2. 去掉方法&#xff0c;給 input 加一個屬性&#xff1a; autocomplete"off"…

科學合理的減肥

1、科學安排一日三餐    在正常生理情況下&#xff0c;一般人習慣于一日三餐。人體最大消耗是在一天中的上午。由于胃經過一夜消化早已排空&#xff0c;如果不吃早飯&#xff0c;那么整個上午的活動所消耗的能量完全要靠前一天晚餐提供&#xff0c;這就遠遠不能滿足營養需要。…

解決: VUE 項目中表單提交中文亂碼、接口請求參數中文亂碼

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 表單提交出現亂碼&#xff1a; 接口請求亂碼同于上圖。 2. 解決&#xff1a; 在出現亂碼的內容外面加函數&#xff1a;decodeURI()…