OpenFire集群配置,Nginx做負載均衡

2024-05-10 11:18

本文主要是介绍OpenFire集群配置,Nginx做負載均衡,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

從網上下載virtualbox並安裝

下載centos作为節點操作系統,我用的CentOS-6.5-x86_64-minimal.iso,這個系統只有398M,不會耽擱太多時間

安裝操作系統,为了好記我用ip地址作为虛擬機名稱251跑nginx,252和253分別跑一個openfire,如果你系統正確安裝後並運行後就應得到這個結果了QQ截圖20131206152402

下面配置每一台機器的ip地址,我們就拿251做为例子。先把這台虛擬機配置成橋接網卡,如圖QQ截圖20131206153830。進入linux系統,編輯/etc/sysconfig/network-scripts/eth0,如圖QQ截圖20131206154748。接下來配置首選DNS,編輯/etc/resolv.conf,如圖QQ截圖20131206155401。保存後執行 service network restart,用ifconfig檢查配置是否正確,如圖QQ截圖20131206154622。你也可以用你的宿主機ping一下這台虛擬機看能否訪問,配置252和253跟配置251是一样的,只是IP不同罷了。

在252和253中裝openfire,去openfire官網上下載最新版的openfire,如何下載有很多方法可以用wget去下載,如果你的系統中沒有wget,可以用yum –y install wget先安裝一個wget,你也可以用你的宿主機去下載然後傳到虛擬機中,怎麼傳到虛擬機中有很多方法ftp,virtualbox共享文件都可以,我用的ftp傳,怎麼在linux中安裝ftp網上文章很多。openfire安裝非常簡單,下載解壓即可。openfire需要有jdk才能運行,所以還需要在252和253中裝jdk,怎麼安裝jdk網上文章很多。jdk和openfire都裝好了後進入openfire安裝目錄的bin目錄下執行./openfire start就启動openfire了,用瀏覽器訪問http://go.rritw.com/192.168.1.252:9090就可以看到設置界面了,不過我們目前不設置,因为要用openfire集群,不能用openfire內置的數據庫,我們還要安裝一個mysql

为了方便,我就把mysql直接安裝在了我的宿主機上ip地址为192.168.1.250,openfire安裝包的\reources\database下有一個openfire_mysql.sql腳本文件,自己建立一個數據庫,名字隨便取,然後在這個數據庫中執行這個sql腳本。为了讓虛擬機能訪問你的宿主機mysql你要開启mysq用戶的遠程訪問權限。

進入http://go.rritw.com/192.168.1.252:9090正式開始配置openfireQQ截圖20131206161751選擇中文 ,QQ截圖20131206161912域名字隨便取不過每個節點的域都要一样,QQ截圖20131206162053如果是集群配置必須選擇標准數據庫,QQ截圖20131206162135配置你的mysql服務器,QQ截圖20131206162333配置管理账號,如果有可以直接跳過,集群配置只需要配置一個账號就行了,其他節點配置直接跳過這一步。如果一切沒問題你就應該用你的管理員账號登錄了,其他節點配置也類似

所有節點的配置都完成了之後接下來就是安裝集群插件了,每個節點安裝openfire插件都是一样的,進入http://go.rritw.com/192.168.1.252:9090QQ截圖20131206162905只需要一個Hazelcast Clustering Plugin就可以完成集群,如果你還想给所有用戶發送廣播信息還可以裝一個Broadcast插件

我只裝了Hazelcast QQ截圖20131206163100有效插件裏有很多免費插件供選擇,點擊+就安裝了,非常簡單,安裝完後QQ截圖20131206163212選擇启用就可以了,稍微等一段時間,如果一直沒有響應重启openfire就可以了,集群中的節點都要安裝Hazelcast Clustering Plugin插件,只要集群配置激活了他會自動掃描網络中安裝了Hazelcast Clustering Plugin插件的openfire並加入集群。集群配置成功後

如圖QQ截圖20131206163529

集群配置是非常簡單的,但是如何把我們的集群暴露给客戶端開發者呢?因为每個節點都有一個ip地址,我們不能在客戶端加入多個ip地址吧,所以我們需要一個負載均衡服務器來分流,客戶端只需要知道這個負載均衡服務器IP就可以了,他們不用關心集群中有多少節點。進入251虛擬機中,下載最新版本的nginx壓縮包,默認nginx只支持http數據包的負載均衡,为了讓nginx支持TCP數據包的負載均衡還需要http://go.rritw.com/github.com/yaoweibin/nginx_tcp_proxy_module這個項目,項目中的readme中說了如何配置,http://go.rritw.com/blog.csdn.net/kylinbl/article/details/8913311說了如何安裝,把nginx安裝好後基本上就算完成了,最後就是配置nginx,如何配置nginx負載均衡網上文章也非常多,我就貼出我的配置,以供参考


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}

tcp  {
   timeout 1d;
   proxy_read_timeout 10d;
   proxy_send_timeout 10d;
   proxy_connect_timeout 30;
   upstream openfire5222{

    server 192.168.1.252:5222;
    server 192.168.1.253:5222;
    }
   server{

    listen 5222;
    proxy_pass openfire5222;
      so_keepalive on;
    tcp_nodelay on;
    }
   upstream openfire5223{
   
    server 192.168.1.252:5223;
    server 192.168.1.253:5223;
    }
   server{
    listen 5223;
        proxy_pass openfire5223;
    so_keepalive on;
    tcp_nodelay on;
   }

}
http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    upstream openfire7070{
    server 192.168.1.252:7070;
    server 192.168.1.253:7070;
    }
    server{
    listen 7070;
    server_name localhost;
        location / {
      proxy_pass http://go.rritw.com/openfire7070;
    }
    }
    upstream openfire9090{
    server 192.168.1.252:9090;
    server 192.168.1.253:9090;
    ip_hash;
    }
    server {
    listen 9090;
    server_name localhost;
        location / {
        proxy_pass http://go.rritw.com/openfire9090;
    }
    }
    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

    location /status{
        tcp_check_status;
    }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://go.rritw.com/127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443;
    #    server_name  localhost;

    #    ssl                  on;
    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_timeout  5m;

    #    ssl_protocols  SSLv2 SSLv3 TLSv1;
    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers   on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

启動nginx訪問http://go.rritw.com/192.168.1.251:9090看能否登錄到openfire,我們在251上沒有安裝openfire哦,如果能登錄證明9090端口分流正常

暴露给客戶端的接口是http://go.rritw.com/192.168.1.251:5222,用spark客戶端(只要支持XMPP協議的客戶端都可以)登錄一下你的管理員账號,如果看到這個界面就證明你的集群配置已經成功了!QQ截圖20131206165101

 

總結:

到目前为止,我們完成了openfire的集群和nginx的負載均衡,但是數據庫始終只有一個,如果在線用戶非常多的情況下,一個數據庫肯定是不行了

这篇关于OpenFire集群配置,Nginx做負載均衡的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/976287

相关文章

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

Spring Boot spring-boot-maven-plugin 参数配置详解(最新推荐)

《SpringBootspring-boot-maven-plugin参数配置详解(最新推荐)》文章介绍了SpringBootMaven插件的5个核心目标(repackage、run、start... 目录一 spring-boot-maven-plugin 插件的5个Goals二 应用场景1 重新打包应用

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

Jenkins分布式集群配置方式

《Jenkins分布式集群配置方式》:本文主要介绍Jenkins分布式集群配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装jenkins2.配置集群总结Jenkins是一个开源项目,它提供了一个容易使用的持续集成系统,并且提供了大量的plugin满

SpringBoot线程池配置使用示例详解

《SpringBoot线程池配置使用示例详解》SpringBoot集成@Async注解,支持线程池参数配置(核心数、队列容量、拒绝策略等)及生命周期管理,结合监控与任务装饰器,提升异步处理效率与系统... 目录一、核心特性二、添加依赖三、参数详解四、配置线程池五、应用实践代码说明拒绝策略(Rejected

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信