nginx安裝配置 1.安裝nginx 提示報如下錯誤: 解決辦法安裝epel:EPEL是企業(yè)版 Linux 附加軟件包的簡稱,,EPEL是一個由Fedora特別興趣小組創(chuàng)建、維護并管理的,,針對 紅帽企業(yè)版 Linux(RHEL)及其衍生發(fā)行版(比如 CentOS,、Scientific Linux、Oracle Enterprise Linux)的一個高質量附加軟件包項目,; 安裝完之后,,即可成功安裝nginx; 2.啟動,、停止nginx 先進入nginx的目錄 執(zhí)行命令 nginx+tomcat負載均衡 1.準備2個tomcat,分別指定端口為8081,,8082 修改webapps/ROOT的index.jsp,,方便測試 最后的輸出在兩個tomcat下面指定各自的端口號8081和8082 2.nginx配置負載均衡(默認策略) 修改/etc/nginx/下面的nginx.conf 此處配置的負載均衡策略是默認的輪詢策略,nginx還支持其他策略包括:ip_hash,、weight,、fair(第三方)、url_hash(第三方),; 默認策略每個web請求按時間順序逐一分配到不同的后端服務器,,這種情況下每次請求都會創(chuàng)建一個新的session,下面做簡單測試: 第一次請求http://ip/ 第二次刷新http://ip/ 第三次刷新http://ip/ 可以發(fā)現(xiàn)每次都產生一個新的session,,而且消息按時間順序逐一分配到不同的后端服務器,,一般需要保持session會話的網站都不允許出現(xiàn)每次請求都產生一個session; 3.nginx配置負載均衡(黏性Session) 每個請求按訪問ip的hash結果分配,,這樣每個訪客固定訪問一個后端服務器,,可以解決session的問題;nginx可以通過在upstream模塊配置ip_hash來實現(xiàn)黏性Session,; 下面做簡單測試: 第一次請求http://ip/ 第二次刷新http://ip/ 第三次刷新http://ip/ 可以發(fā)現(xiàn)第一次請求設置了key=value,后面每次都能獲取到key值,,sessionId沒有改變,tomcat也沒有改變,,實現(xiàn)了黏性Session,; 此時可以把port=8081的tomcat停掉,然后再觀察 第四次刷新http://ip/ 第五次刷新http://ip/ 可以發(fā)現(xiàn)消息轉發(fā)到了tomcat-8082,,并且session丟失,,重新創(chuàng)建了新的session,; 如何讓這種情況session不丟失,也有兩種方案:Session復制和Session共享,;Session共享從擴展性,,性能方面都更加好,下面重點介紹一下Session共享如何實現(xiàn),; nginx+tomcat實現(xiàn)Session共享 Session共享思想就是把session保存到一個公共的地方,,用的時候再從里面取出來,具體這個公共的地方可以是:redis,,db,,memcached等,下面已redis為實例 1.redis安裝配置 安裝完成以后配置文件/etc/redis.conf 啟動redis服務端 啟動客戶端 2.Tomcat引入依賴的jar $TOMCAT_HOME/lib添加如下jar包 3.Tomcat修改配置 修改$TOMCAT_HOME/conf目錄下的context.xml文件 Tomcat提供了一個開放的session管理和持久化的org.apache.catalina.session.ManagerBase,,繼承這個抽象類并做一些簡單的配置,,即可讓你的session管理類接管Tomcat的session讀取和持久化,這里使用的是tomcat-redis-session-manager https://github.com/jcoleman/tomcat-redis-session-manager來管理session,; RedisSessionManager繼承于org.apache.catalina.session.ManagerBase類,,對session的相關操作都在此類中; 4.測試 第一次請求http://ip/ 第二次刷新http://ip/ 將tomcat-8081停掉,, 第三次刷新http://ip/ 可以發(fā)現(xiàn)此時消息已經轉發(fā)到tomcat-8082節(jié)點了,,但是session沒有改變,同時key也可以獲取到值,; 5.查看redis 可以發(fā)現(xiàn)redis里面已經存放了session對象,,并且使用sessionId作為key值,存放了session的二進制數據,; |
|