Ejabberd安装及集群搭建
来源:互联网 发布:大数据研发工程师招聘 编辑:程序博客网 时间:2024/05/16 10:08
转自:http://blog.chinaunix.net/uid-8092042-id-2385071.html
Ejabberd简介
Ejabberd是基于Jabber/XMPP协议的即时通讯服务器,由GPLv2授权(免费和开放源码),采用Erlang/OTP开发。它的特点是,跨平台,容错,集群和模块化。
Ejabberd目前是可扩展性最好的一种Jabber/XMPP服务器,支持分布多个服务器,并且具有容错处理,单台服务器失效不影响整个cluster运作。
关键功能- 跨平台的: ejabberd可以运行在Microsoft Windows和Unix派生系统,例如Linux, FreeBSD和NetBSD.
- 分布式的: 你可以在一个集群的机器上运行ejabberd,并且所有的机器都服务于同一个或一些Jabbe域. 当你需要更大容量的时候,你可以简单地增加一个廉价节点到你的集群里. 因此, 你不需要买一个昂贵的高端机器来支持上万个并发用户.
- 容错: 你可以布署一个ejabberd集群,这样一个正常运行的服务的所有必需信息将被复制到所有节点. 这意味着如果其中一个节点崩溃了, 其他节点将无中断的继续运行. 另外, 也可以‘不停机’增加或更换节点.
- 易于管理: ejabberd建立于开源的Erlang. 所以你不需要安装外部服数据库, 外部web服务器, 除此以外因为每个东西都已经包含在里面, 并且处于开箱可用状态. 其他管理上的好处包括:
- 详尽的文档.
- 便捷的安装程序,包括在Linux, Mac OS X, 以及Windows系统下.
- Web管理.
- 共享名册组.
- 命令行管理工具.
- 可外部集成的验证机制.
- 发送匿名消息的能力.
- 国际化: ejabberd领导国际化. 非常适合全球化. 相关功能包括:
- 翻译成25种语言.
- 支持IDNA.
- 开放标准: ejabberd是的一个完全支持XMPP标准的开源Jabber服务器.
- 完全兼容XMPP.
- 基于XML的协议.
- 支持的协议很多.
额外功能
Ejabberd广泛支持的其他先进特性:
- 模块化
- 只装在你想要的模块.
- 在你自己的自定义模块扩展ejabberd.
- 安全性
- 支持c2s和s2s连接的SASL和STARTTLS.
- 支持s2s连接的STARTTLS和Dialback.
- 可通过HTTPS安全访问的Web管理.
- 数据库
- 快速布署的内部数据库(Mnesia).
- 原生的MySQL支持.
- 原生的PostgreSQL支持.
- 支持ODBC数据存储.
- 支持Microsoft SQL Server.
- 验证
- 内部验证.
- PAM, LDAP 和 ODBC.
- 外部验证脚本.
- 其他
- 支持虚拟主机.
- XML流压缩 (XEP-0138).
- 统计 (XEP-0039).
- 支持IPv6的c2s和s2s连接.
- 支持集群和HTML日志的多用户聊天模块.
- 基于用户vCards的用户目录.
- 支持基于PubSub的个人事件的发行-订阅组件.
- 支持web客户端: HTTP轮询和HTTP绑定(BOSH)服务.
- IRC网关.
- 组件支持: 安装特定网关之后和外部网络的接口,如 AIM, ICQ 和 MSN.
OS:
- Ubuntu 11.04 ( 64bit )
Soft:
- Ejabberd-2.1.8
- Server01: 10.120.10.37 ( hostname:chaos )
- Server02: 10.120.10.39 ( hostname:gaia )
本次安装下载源码包,编译安装,你也可以下载简易ProcessOne发布的二进制安装包。
软件下载地址: [Ejabberd官网]
编译及安装- tar -zxvf ejabberd-2.1.8.tar.gz
- cd ejabberd-2.1.8
- ./configure --prefix=/usr/local/ejabeerd --enable-odbc
- make && make install
编译参数:
- --enable-odbc or --enable-mssql
如果你想使用外部数据库则需要这个选项.如果第一次没有编译进入,也可以后面动态编译进软件。
- --enable-full-xml
允许使用基于XML的优化. 例如它将使用 CDATA 来逃逸 XMPP 流中的字符串. 只有你确定你的XMPP客户端有一个全兼容的XML分析器才使用这个选项.
- --enable-pam
允许PAM验证方法
软件目录结构:
- /etc/ejabberd/
- 配置文件目录:
- ejabberd.cfg
- ejabberd配置文件
- ejabberdctl.cfg
- 管理脚本配置文件
- inetrc
- 网络DNS配置文件
- /lib/ejabberd/
- ebin/
- Erlang二进制文件(*.beam)
- include/
- Erlang头文件(*.hrl)
- priv/
- 运行时需要的其他文件
- bin/
- 可执行程序
- lib/
- 二进制系统文件(*.so)
- msgs/
- 翻译文件(*.msgs)
- /sbin/ejabberdctl
- 管理脚本
- /share/doc/ejabberd/
- ejabberd文档
- /var/lib/ejabberd/
- Spool目录:
- .erlang.cookie
- Erlang cookie文件
- acl.DCD, ...
- Mnesia数据库spool文件(*.DCD, *.DCL, *.DAT)
- /var/log/ejabberd/
- 日志目录:
- ejabberd.log
- ejabberd服务日志
- erlang.log
- Erlang/OTP系统日志
启动与关闭:
- ejabberdctl start
- ejabberdctl status
- The node ejabberd@chaos is started with status: started
- ejabberd is running in that node
- ejabberdctl stop
- 注意:如果第一次安装完成,就马上启动软件,ejabberd会记录你这次node信息进入数据库,如果你在后面修改配置文件中的node信息,启动会报错。所以建议如果有意需要绑定系统hostname作为node名,请在第一次启动前就完成修改,修改ejabberdctl.cfg文件中ERLANG_NODE变量,本次安装修改成ERLANG_NODE=ejabberd@chaos。
1. 使用ejabberd添加帐户
ejabberdctl register admintest chaos 123456- 注:admintest是帐户名,chaos是虚拟机名,123456是帐户密码
2. 编辑ejabberd.cfg文件配置ejabberd帐户权限
{acl, admin, {user, "admintest", "chaos"}}3. 重启ejabberd,配置生效
Web管理ejabberd Web管理允许使用web浏览器管理大部分ejabberd.
Ejabberd集群配置现将chaos和gaia加入到一个集群中。前面已经完成了chaos的Ejabberd安装,并配置node名为:chaos
1. 从chaos机器拷贝.erlang.cookie文件到gaia机器.默认cookie文件放置为:/usr/local/ejabberd/var/lib/ejabberd。或者你也可以增加‘-setcookie content_of_.erlang.cookie’选项到以下所有‘erl’ 命令.
2. 在gaia机器上,在ejabberd工作目录中,以 ejabberd 守候进程用户运行以下命令:
- erl -sname ejabberd \
- -mnesia dir '"/var/lib/ejabberd/"' \
- -mnesia extra_db_nodes "['ejabberd@chaos']" \
- -s mnesia
- 注意:gaia机器的ejabberd不能启动,如果启动,执行上面的脚步会报错。最好是在执行这段指令之前可以删除gaia机器上面的数据库,也就是/usr/local/ejabberd/var/lib/ejabberd下面的所有文件,但是要保留cookie文件。删除之后后面才方便同步chaos的数据库,不然后面会报数据存在的错误。
3. 现在在相同的‘erl’会话下运行以下命令:
- mnesia:change_table_copy_type(schema, node(), disc_copies).
以上指令是为该数据库建立本地磁盘存储.
4. 现在你可以增加更多表的复制到这个节点 ,使用‘mnesia:add_table_copy’ 或 ‘mnesia:change_table_copy_type’如上 (只是把 ‘schema’ 替换成其他表名,并且 ‘disc_copies’可以被替换成‘ram_copies’ 或 ‘disc_only_copies’).
哪个表被复制,依赖于你的需要, 你可以从‘mnesia:info().’命令得到一些提示, 通过查看每个位于 ’first’的表的大小和缺省的存储类型.
复制一个表使得这个节点的这个表的查询更加快速. 写入, 另一方面, 将更慢. 而且当然如果复制之一的机器挂了, 其他复制将被使用.
5. 运行‘init:stop().’ 或只是 ‘q().’ 退出 Erlang shell. 这可能要花些时间,如果 Mnesia 还没有从first传输和处理完所有数据.
6. 现在在第二台机器上使用和第一台机器类似的配置运行 ejabberd: 你可能不需要重复‘acl’ 和 ‘access’ 选项,因为它们将从第一台机器获得; 并且 mod_irc 只应该在集群里的一台机器上激活.
你可以在其他机器上重复这些步骤来服务于这个域.
Ejabberd负载均衡配置1) 修改gaia、chaos机器ejabberd.ctf文件。在末尾添加:
- {domain_balancing_component_number, "chaos", 2}.
2) 修改日志级别为debug方便观察后台信息。
3) 完成以上操作重启ejabberd服务。
参考资料Ejabberd官方网站
Ejabberd2:安装和操作指南
- Ejabberd安装及集群搭建
- ejabberd 集群搭建
- 搭建ejabberd集群
- ejabberd集群搭建
- ejabberd集群
- ejabberd安装与集群可以版
- Ejabberd(1)--环境安装与搭建
- ejabberd 安装
- 安装ejabberd
- RabbitMQ的安装及集群搭建方法
- ES及插件安装和集群搭建
- redis安装及cluster集群环境搭建
- ElasticSearch集群搭建及插件安装
- RabbitMQ的安装及集群搭建方法
- mapreduce集群的搭建及安装
- ejabberd集群配置
- ejabberd集群续
- ejabberd 搭建 webim 备忘
- 谷歌眼镜放宽预订购限制(附谷歌眼镜美图欣赏)
- Android NinePatch图片,*.9.png图片
- 我的新年作品之-移动行业版
- 利用GBK双字节编码突破PHP单引号转义限制进行SQL注入
- 黑马程序员---委托(delegate)的进一步理解
- Ejabberd安装及集群搭建
- iOS 截屏功能代码
- 关于java的try-catch
- jsp面试题
- JAVA 枚举类型简单应用
- Visual Studio 2008中的jQuery Intellisense
- 即时通讯积累
- Eclipse Debugging Error: ClassNotFoundException
- QuickFix发消息