即時通訊系統Openfire分析之七:集羣配置

  前言

  Openfire的單機併發量,一直是一個比較含糊的東西,即便官方也沒有很清楚的介紹。但按我自已評估,以4核、8G內存這樣的機器配置,5萬+的併發應問題不大。而當用戶體量逐步上漲,前期能夠經過擴容的方式提高性能,但若體量足夠大,如幾十萬併發,單機的擴容已不是首選的方案,一來考慮性價比,二來若是整套系統跑在一臺機器上,出現異常可能會波及全部在線的用戶,用戶感覺極差。這時候,就須要把系統的壓力分攤到多個服務器上,這就是集羣。nginx

  集羣的引入,是爲了解決單機的併發瓶頸,在多個服務器上,分別運行Openfire實例,並進行數據共享,使得多臺機器的協做運行效果,與單機同樣。sql

  而優秀的集羣系統,不單單能提高性能,並且能自我管理。當其中某臺機器出現異常,將觸發集羣的維護機制,好比剔除該異常節點,爲系統的穩定性提供保障。數據庫

  Openfire爲集羣的接入提供了透明接口,能夠經過添加插件的形式實現集羣。服務器

  具體Openfire的集羣機制是如何,咱們在後面的章節再來分析,本章主要講解集羣的配置,使用的集羣插件是:Hazelcast。併發

  硬件說明

  一、兩臺服務器
IP1:192.168.5.1

IP2:192.168.5.2

  二、Mysql數據庫,安裝在服務器1負載均衡

數據地址:192.168.5.1:3306

  插件安裝與配置

  一、安裝插件:Hazelcast Plugin,直接在Openfire管理後臺安裝便可。
  二、配置:
  (1)兩臺Openfire服務器配置相同的域
  (2)鏈接同一個數據庫
  (3)服務器的集羣配置:
  服務器1:
<join>
    <multicast enabled="false">
    <multicast-group>224.2.2.3</multicast-group>
    <multicast-port>54327</multicast-port>
    </multicast>
    <tcp-ip enabled="true">
        <member>192.168.5.2:5701</member>
        <member>192.168.5.1:5701</member>
    </tcp-ip>
    <aws enabled="false"/>
</join>
<interfaces enabled="true">
    <interface>192.168.5.1</interface>
</interfaces>                

  服務器2:tcp

<join>
    <multicast enabled="false">
    <multicast-group>224.2.2.3</multicast-group>
    <multicast-port>54327</multicast-port>
    </multicast>
    <tcp-ip enabled="true">
        <member>192.168.5:1:5701</member>
        <member>192.168.5.2:5701</member>
    </tcp-ip>
    <aws enabled="false"/>
</join>
<interfaces enabled="true">
    <interface>192.168.5.2</interface>
</interfaces>    
  說明:其中member中是集羣中各節點的IP地址和端口號,interface中是當前機器的IP地址。
  (4)在Openfire控制檯,Server-->Clustering-->Clutering Enabled中,選擇Enabled,保存,集羣啓動。

  測試

  使用兩個客戶端,分別登陸兩個機器,若是客戶端能進行通訊,則集羣功能已經具有。性能

  (1)在任意一臺服務器,登陸Openfire管理後臺,建立兩個用戶如:1002三、10024
  (2)在另外一臺服務器的管理後臺用戶列表,便可看到剛剛建立的用戶
  (3)在兩臺PC機,用Spark分別登陸上面兩個賬號,注意設置鏈接不一樣的主機:
  客戶端 1 鏈接服務器 1(下圖爲Spark高級設置界面):

     

  客戶端 2 鏈接服務器 2:
    
  (4)測試互發消息,若能完成通訊說明集羣OK。

  說明

  本章節以最簡化了的操做,配置Openfire集羣,僅是爲驗證Openfire集羣的可行性,併爲後續的分析作準備。
  但實際使用中,要使不一樣的客戶端鏈接分配到不一樣的服務器,須要加入一臺服務器,做爲負載均衡,可安裝開源的負載均衡組件Haproxy,或者用nginx均可以。
  另外,數據庫方面,實際的Openfire集羣中,數據庫也應是集羣使用。
 
 
  下一章,集羣分析
 

  OVER!
相關文章
相關標籤/搜索