Ubuntu下的OpenERP負載均衡實例

      負載均衡是很多大流量站都會用到的技術,有web服務器的負載均衡,也有數據庫的負載均衡。下面我們來探討一下,web服務器方面的負載均衡該如何配置。
      我們知道如今apache作爲web服務器,用戶量穩居同類型服務器第一位。但是apache在處理高併發用戶訪問上做的是很不到位的。所以如今國內的很多大站都在採用Nginx的服務器。因爲它的核心優點就是處理高併發請求時有很不錯的效果。同時它的開源,易擴展,使得很多的設計者不斷的完善它。
      那麼下面我們就來一塊利用這款web服務器來配置一下OpenERP的負載均衡實例。
      測試的環境:
      Ubuntu VM1:用作Nginx的配置主機,客戶端訪問的是這個主機(192.168.254.134)
      Ubuntu VM2 : OpenERP的第一個WEB端(192.168.254.216),加入Nginx的upstream服務器列表中
      Ubuntu VM3:OpenERP的第二個WEB端(192.168.254.210),加入Nginx的upstream服務器列表中

      我們分以下步驟進行負載均衡的配置:
      一:數據庫的配置
      在VM2和VM3中安裝Postgresql數據庫,安裝方法以及注意事項如下:
      1,採用命令:sudo apt-get install postgresql
      2,安裝完後,切換到postgres用戶:sudo su postgres
      3,創建新的用戶賬戶:createuser oe
      4,進入數據庫:psql template1
      5,修改用戶密碼:alter role oe with password '123456';      //注意不要忘了分號
      6,退出數據庫編輯:\q
      7,打開數據庫配置文件:sudo nano /etc/postgresql/9.1/main/postgresql.conf
      8,修改連接權限:#listen_addresses = ‘localhost’改爲 listen_addresses = ‘*’
      9,啓用密碼驗證:#password_encryption = on改爲password_encryption = on
      10,打開pg_hba.conf:sudo nano /etc/postgresql/9.1/main/pg_hba.conf
      11,在末尾加上可訪問ip段:host all all 0.0.0.0 0.0.0.0 md5
      12,重啓數據庫服務:sudo /etc/init.d/postgresql restart
      說明:在進行數據庫配置的時候一定注意連接權限和密碼驗證的修改,不修改的話是不能進行遠程連接的。你可以用pgAdminIII或者一些數據庫連接工具進行連接測試,能連接上說明配置成功。

       二:OpenERP的配置
       在VM2和VM3中安裝OpenERP程序,安裝之前需要先安裝一些OE所需要的Python庫,具體如下:
       1,安裝Python庫
       sudo apt-get install python-dateutil python-feedparser python-gdata python-ldap python-libxslt1 python-lxml python-mako python-openid python-psycopg2 python-pybabel python-pychart python-pydot python-pyparsing python-reportlab python-simplejson python-tz python-vatnumber python-vobject python-webdav python-werkzeug python-xlwt python-yaml python-zsi 
       2,在更新源文件中增加OpenERP的更新地址:sudo nano /etc/apt/sources.list 
       3,文件打開以後,在最下面增加一行: deb http://nightly.openerp.com/7.0/nightly/deb/ ./            //注意最後一個.前有一空格
       4,更新來源: sudo apt-get update
       5,升級所有套件: sudo apt-get upgrade
       6,安裝openerp的程序:sudo apt-get install openerp
       7,啓動openerp服務:sudo /etc/init.d/openerp start

       三:Nginx的配置
       在VM1中安裝Nginx服務器,其中會涉及到一些概念稍後會一一列舉出來:
       1,安裝nginx服務器:sudo apt-get install nginx
       2,打開nginx配置文件:sudo nano /etc/nginx/nginx.conf
       3,在http配置中加入upstream模塊配置:
      
       4,繼續添加虛擬主機的配置:
      
       5,重啓nginx服務器:sudo /etc/init.d/nginx restart
       6,在windows主機瀏覽器中輸入http://192.168.254.134:8069/ 即可看到OE頁面

       四:關於upstream的說明
       通過上面的配置你會發現在某一瀏覽器下第一次以某個用戶登錄OE,那麼下次就會仍然以這個用戶進入。這就是ip_hash起到了作用。下面我們來看看它究竟是什麼?
       Nginx服務器中有5種負載均衡的算法,ip_hash就是其中的一種,我們以前三種爲例:
       1,默認(輪詢)
       當在upstream配置中什麼方式也不寫的時候就是默認配置,具體的如下:
       upstream oeserver{
              server   192.168.253.41:8069;
              server   192.168.254.216:8069;
       }
       這就是輪詢的方式,它按照請求的先後分配到兩個server上,如果其中的一個server掛掉了,服務器會自動把它給踢出掉。
       我們可以在終端訪問URL,然後觀察後臺server的分配情況:
      
      
       我採用for i in $(seq 4); do curl http://192.168.254.134:8069; done語句對Nginx服務器訪問4次,我們看下面輸出的結果。有兩個db=my的結果,兩個db=254的結果。這兩個db是分別在兩個server下的OE裏創建的。通過這說明,輪詢的時候是根據請求順序在後臺server中按順序分配服務器的。

      2,weight(權重)
      有時候後臺服務器的訪問會不均勻,這時候我們可以給每一個server設置一個權重,提高或減小被分配到的機率。具體我們可以這樣寫:
      upstream oeserver{
              server   192.168.253.41:8069 weight=1;
              server   192.168.254.216:8069 weight=2;
       }
根據weight算法,weight值越大,它會被優先分配。那麼也就是說會優先分配第二個server,但是這裏的優先不是說就是一定會分配到四二個server。因爲weight是機率值,即1/3的機率分到第一個server,2/3的機率分到第二個server。你可以利用1中的方法將seq的值設大一點,來看看是不是第二個server中的db=my多。

      3,ip_hash
       這個是進行OE負載配置的推薦寫法,因爲它可以解決session的問題,第一次訪問了,下次會保留上次的結果。配置如下:
       upstream oeserver{
              ip_hash;
              server   192.168.253.41:8069;
              server   192.168.254.216:8069;
       }
       按照這個配置我們在瀏覽器中訪問Nginx服務器的時候會始終訪問第一個出現的server。到底是不是這樣那,我們來看一下


       可以發現,所有的db都是my這個數據庫,也就是訪問的都是第二個server。驗證了我們所說的。這裏要注意的是,不要將ip_hash和weight一塊用(url_hash除外),否則在重啓nginx服務器的時候會報如下錯誤:


      這是因爲在upstream中開頭寫了ip_hash,則運用了ip_hash算法,而在server後面又加了weight值,那麼在ip_hash這個算法之中是沒有weight這個參數的使用的。所以會報錯。

    4,url_hash,fair自己可以到網上搜索資料

總結:通過上面的步驟,我們就完成了對OpenERP的負載均衡配置,但是session共享的問題以及數據庫的同步問題還需要在進行配置。這裏只是完成了OpenERP在Nginx的部署。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章