12345678910111213141516171819202122232" />

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

nginx+keepalived+tomcat之具體配置檔

系統 3172 0

前沿知識點:

  1. nginx負責負載均衡(反向代理)

  2. msm(memcached session manager)負責緩存會話信息,從而實現會話保持

所需包:

  1. nginx和memcached采用最新穩定版

  2. tomcat版本需要與msm版本一致,這里采用tomcat7

  3. msm包共計9個包,包名具體信息查看附件,msm的所有包放到$CATALINA_HOME/lib

配置過程:

nginx的配置信息如下-->


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
...
?
http {
?
???? ...
?
???? upstream tomcat {
?
???????? server node1:8080;
?
???????? server node2:8080;
?
#這里具體使用什么算法,暫定,不過我覺得ip_hash不好,會造成負載不均衡
?
???? }
?
???? server {
?
???? ...
?
???????? location ~* ^ /testapp {
?
???????????? proxy_pass http: //tomcat ;
?
???????????? proxy_redirect off;
?
???????????? proxy_set_header X-real-ip $remote_addr;
?
???????????? proxy_set_header X-forwarded- for $proxy_add_x_forwarded_for;
?
???????????? proxy_set_header Host $host;
?
???????? }
?
???? ...
?
???? }
?
}

?


tomcat的配置信息如下-->


首先修改server.xml,在默認的host flag中添加context

1
2
3
4
5
6
7
8
9
10
11
12
13
...
?
???? < host >
?
???? ...
?
???? < context path = "/testapp" docbase = "testapp/" />
?
???? ...
?
???? </ host >
?
...

?

其次修改context.xml,在默認的context flag中添加manager

其中粘性session方式如下: ?Sticky? 模式 tomcat 本地容器 session? session ?memcached 為備 session Request 請求到來時, ?判斷tomcat容器是否發生變化,若變化(即原tomcat down掉),則 memcached 加載備 session tomcat2 ,響應給客戶端,請求結束后,重置session_id,并更新到memcached ?

?

  
1
2
3
4
5
6
7
8
9
< Context >
?? ...
?? < Manager className = "de.javakaffee.web.msm.MemcachedBackupSessionManager"
???? memcachedNodes = "n1:host1.yourdomain.com:11211,n2:host2.yourdomain.com:11211"
??? failoverNodes = "n1"
???? requestUriIgnorePattern = ".*\.(ico|png|gif|jpg|css|js)$"
???? transcoderFactoryClass = "de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
???? />
</ Context >
  

?

非粘性session如下: ?Non-Sticky 模式 tomcat session? ? 中轉 session , ?memcached1? 為主, memcached 2? 為備 session 。 Request 請求到來時,從 memcached 2 加載備 ?session? ?tomcat ,(另外,若 只有一個 memcached 節點,或者 memcached2? 出錯時,且 tomcat本地 容器 中還沒有 session, 則從 memcached1 加載主 ?session? ?tomcat ), Request 請求結束時,將 tomcat session 更新至 ? memcached1 和備 memcached2 ,并且清除 tomcat session? 。以達到主備同步之目的,如下是non-sticky模式的響應流程圖:(圖片來源網絡)。

此模式下,基于session的驗證碼將無法使用,因為此模式下,第一次session是用本地,然后存放到mem1和mem2中,之后客戶再次請求,則路由到了另外一臺tomcat上,又因為是同一個session_id,所以使用的是mem1中,但是mem1中確是舊的session.(但是驗證碼要求每一次都不一樣...)

?

?

?

  
1
2
3
4
5
6
7
8
9
10
11
< Context >
?? ...
? < ManagerclassName = "de.javakaffee.web.msm.MemcachedBackupSessionManager"
??? memcachedNodes = "n1:host1.yourdomain.com:11211,n2:host2.yourdomain.com:11211"
??? sticky = "false"
??? sessionBackupAsync = "false"
??? lockingMode = "uriPattern:/path1|/path2"
??? requestUriIgnorePattern = ".*\.(ico|png|gif|jpg|css|js)$"
??? transcoderFactoryClass = "de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
??? />
</ Context >
  

?


keepalived配置信息如下-->這里只貼出主的,從的就不貼了

?


?

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
! Configuration File for keepalived
?
global_defs {
??? notification_email {
????? acassen@firewall.loc
????? failover@firewall.loc
????? sysadmin@firewall.loc
??? }
??? notification_email_from Alexandre.Cassen@firewall.loc
??? smtp_server 127.0.0.1
??? smtp_connect_timeout 30
??? router_id LVS_DEVEL
}
#<Spinestars
vrrp_script chk_keepalived_down {
???? script "[ -f /var/run/keepaliveddown ] && exit 1 || exit 0"
???? interval 2
???? weight -2
}
#nginx_check_script
vrrp_script chk_nginx {
???? script "killall -0 nginx && exit 0 || exit 1"
???? interval 2
???? weight -2
}
#/Spinestars>
vrrp_instance VI_1 {
???? state MASTER
???? interface eth1
???? virtual_router_id 20
???? mcast_src_ip 192.168.100.1
???? priority 100
???? advert_int 1
???? authentication {
???????? auth_type PASS
???????? auth_pass 1111
???? }
???? virtual_ipaddress {
???????? 10.88.100.2
???? }
???? track_script {
???? chk_nginx
???? chk_keepalived_down
???? }
}

?

nginx動靜分離配置:

?

...

#<Spinestars
upstream?tomcat_servers?{
????????server?node1 : 8080 ;
????????server?node2 : 8080 ;
}
server?{
????????listen?????? * : 80 ;
????????server_name?? test .shop.com;
????????root / var / www / shop;
????????index?index.html?index.jsp?index.htm;
#/Spinestars>?


#<Spinestars

??????? location? ~ * ?\.(html | jpg | png | jpeg | css | gif | ico)$?{

? ? ? ? ? ?root? / var / www;

? ? ? ??}

? ? ? ? location? ~ * ?\.(js | jhtml)$?{

? ? ? ? ? ? ? ??proxy_pass?http : / / tomcat_servers;

? ? ? ? ? ? ? ??proxy_redirect?off;

? ? ? ? ? ? ? ? proxy_set_header?X - Forwarded - For?$proxy_add_x_forwarded_for;

? ? ? ? ??? ? ??proxy_set_header?Host?$host;

? ? ? ? ? ? ? ??proxy_set_header?X - Real - IP?$remote_addr;

? ? ? ? }

? ? ? ?? if ?(?$host? = ? 'test.shop.com' ?){

? ? ? ? ? ? ? ? rewrite? ^ / $? http : / / test .shop.com / shop ?permanent;

? ? ? ??}
? ?? ? ? #以下location是測試用的
? ? ? ? location? ~ * ? ^ / testapp?{

? ? ? ? ? ? ? ??proxy_pass?http : / / tomcat_servers;

????????????????proxy_redirect?off;

????????????????proxy_set_header?X - Forwarded - For?$proxy_add_x_forwarded_for;

????????????????proxy_set_header?Host?$host;

????????????????proxy_set_header?X - Real - IP?$remote_addr;

? ? ? ??}

#/Spinestars>

...

}

?



?

nginx+keepalived+tomcat之具體配置檔


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 兴文县| 体育| 镇宁| 广汉市| 南和县| 汶川县| 郁南县| 吴忠市| 图木舒克市| 馆陶县| 文成县| 堆龙德庆县| 邵东县| 梁山县| 隆尧县| 洛浦县| 汕头市| 大同县| 钟祥市| 建水县| 德惠市| 清流县| 平度市| 盐亭县| 古浪县| 阳曲县| 东乌珠穆沁旗| 临潭县| 渭南市| 沙坪坝区| 仁布县| 渑池县| 潼南县| 伊春市| 莲花县| 静乐县| 万全县| 宝鸡市| 南靖县| 咸阳市| 奉化市|