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

相关文章

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Debian系和Redhat系防火墙配置方式

《Debian系和Redhat系防火墙配置方式》文章对比了Debian系UFW和Redhat系Firewalld防火墙的安装、启用禁用、端口管理、规则查看及注意事项,强调SSH端口需开放、规则持久化,... 目录Debian系UFW防火墙1. 安装2. 启用与禁用3. 基本命令4. 注意事项5. 示例配置R

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

PyCharm中配置PyQt的实现步骤

《PyCharm中配置PyQt的实现步骤》PyCharm是JetBrains推出的一款强大的PythonIDE,结合PyQt可以进行pythion高效开发桌面GUI应用程序,本文就来介绍一下PyCha... 目录1. 安装China编程PyQt1.PyQt 核心组件2. 基础 PyQt 应用程序结构3. 使用 Q

Redis MCP 安装与配置指南

《RedisMCP安装与配置指南》本文将详细介绍如何安装和配置RedisMCP,包括快速启动、源码安装、Docker安装、以及相关的配置参数和环境变量设置,感兴趣的朋友一起看看吧... 目录一、Redis MCP 简介二、安www.chinasem.cn装 Redis MCP 服务2.1 快速启动(推荐)2.

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

Spring Boot Maven 插件如何构建可执行 JAR 的核心配置

《SpringBootMaven插件如何构建可执行JAR的核心配置》SpringBoot核心Maven插件,用于生成可执行JAR/WAR,内置服务器简化部署,支持热部署、多环境配置及依赖管理... 目录前言一、插件的核心功能与目标1.1 插件的定位1.2 插件的 Goals(目标)1.3 插件定位1.4 核

RabbitMQ消息总线方式刷新配置服务全过程

《RabbitMQ消息总线方式刷新配置服务全过程》SpringCloudBus通过消息总线与MQ实现微服务配置统一刷新,结合GitWebhooks自动触发更新,避免手动重启,提升效率与可靠性,适用于配... 目录前言介绍环境准备代码示例测试验证总结前言介绍在微服务架构中,为了更方便的向微服务实例广播消息,

Nginx安全防护的多种方法

《Nginx安全防护的多种方法》在生产环境中,需要隐藏Nginx的版本号,以避免泄漏Nginx的版本,使攻击者不能针对特定版本进行攻击,下面就来介绍一下Nginx安全防护的方法,感兴趣的可以了解一下... 目录核心安全配置1.编译安装 Nginx2.隐藏版本号3.限制危险请求方法4.请求限制(CC攻击防御)

nginx中端口无权限的问题解决

《nginx中端口无权限的问题解决》当Nginx日志报错bind()to80failed(13:Permissiondenied)时,这通常是由于权限不足导致Nginx无法绑定到80端口,下面就来... 目录一、问题原因分析二、解决方案1. 以 root 权限运行 Nginx(不推荐)2. 为 Nginx