想在MochiWeb中用mnesia,并且让mnesia按集群部署。
Erlang mochiweb 部署
环境:
2台centos系统的机器,在同一网段。
设置host
ip:192.168.2.126
more /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=centos-126
GATEWAY=192.168.0.1
more /etc/hosts
127.0.0.1 centos-126 localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.2.127 www.centos127.com
注意:192.168.2.127 www.centos127.com,要保证126这台机器能够通过域名,ping通127机器。
ip:192.168.2.127
more /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=centos-127
GATEWAY=192.168.0.1
more /etc/hosts
127.0.0.1 centos-127 localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.2.126 www.centos126.com
注意:192.168.2.126 www.centos126.com,要保证127这台机器能够通过域名,ping通126机器。
设置完host后,保证2台机器能通过,hostname相互ping通。
测试Erlang能否net_adm:ping通
启动Erlang虚拟机:
[root@centos-126 /]# erl -name "a@www.centos-126.com" -setcookie abc
[root@centos-127 /]# erl -name "b@www.centos127.com" -setcookie abc
验证net_adm:ping
(b@www.centos127.com)1> net_adm:ping(a@www.centos126.com).
pong
(a@www.centos126.com)1> net_adm:ping(b@www.centos127.com).
pong
说明Erlang能够彼此ping通。
接下来配置MochiWeb:
在Programming Erlang书中,说到
引用
We can also use -sname on two different machines when they are on the same subnet.
所以我使用sname进行配置。
首先还是更改hostname
ip:192.168.2.126
vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=centos126
GATEWAY=192.168.0.1
vim /etc/hosts
127.0.0.1 centos126
192.168.2.127 centos127
hostname centos126
让新设置的hostname生效
ip:192.168.2.127
vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=centos127
GATEWAY=192.168.0.1
vim /etc/hosts
127.0.0.1 centos127
192.168.2.126 centos126
hostname centos127
让新设置的hostname生效
互相ping通。
设置MochiWeb的start-dev.sh
126,127上的start-dev.sh 修改如下:
#!/bin/sh
# NOTE: mustache templates need \ because they are not awesome.
exec erl +P 500000 -pa ebin edit deps/*/ebin -boot start_sasl \
-setcookie abc \
-sname im_dev \
-s im \
-s reloader \
-mnesia dir '"/ide/erlang/im/db/online"'
设置mnesia的初始化方法,设置为两点同步,仅内存模式。
online_init.erl
-record(im_monitor, {pid,
user_name
}
).
%% save user_name, pid, type is bag
-record(im_chat, {user_name,
pid
}
).
init() ->
mnesia:create_table(im_monitor,
[{ram_copies, [im_dev@centos126,im_dev@centos127]},
{type, set},
{attributes, record_info(fields, im_monitor)}]),
mnesia:create_table(im_chat,
[{ram_copies, [im_dev@centos126,im_dev@centos127]},
{type, bag},
{attributes, record_info(fields, im_chat)}]).
验证:详细请参考
http://amornio.iteye.com/blog/1546536
126,127上
1) 分别输入./start-dev.sh,正常启动
2) 分别net_adm:ping()通
3) 第一次启动时候,在其中一台输入 mnesia:create_schema([im_dev@centos126,im_dev@centos127]).
4) 分别输入,mnesia:start().
5) 其中一台,输入online_init:init().返回{atomic, ok}.
6) 分别输入mnesia:info().数据表是否创建成功。
好了,现在完成了。
分享到:
相关推荐
erlang mochiweb-test demo .zip
1.2.Mnesia.数据库管理系统(DBMS 2、开始.Mnesia 2.1.首次启动.Mnesia 2.2.一个示例 3、构建.Mnesia.数据库 3.1.定义模式 3.2.数据模型 3.3.启动.Mnesia 3.4.创建新表 4、事务和其他上下文存取 ...
erlang-mnesia-19.3.6.4-1.el7.x86_64.rpm
erlang的高性能集群服务器,erlang解决方案。 供大家学习使用
Management System, appropriate for telecommunications applications and other Erlang applications which require continuous operation and soft real-time properties. It is one section of the Open Telecom...
MochiWeb 的最新版本可在MochiWeb 的邮件列表位于 设置 MochiWeb 环境需要 Erlang OTP,可在使用项目创建一个新的 mochiweb:make app PROJECT=project_name 要使用特定目录中的项目创建新的 mochiweb: make app ...
高性能集群服务器Erlang解决方案
Examples are included how to start an Erlang session, specify a Mnesia database directory, initialize a database schema, start Mnesia, and create tables. Initial prototyping of record definitions is ...
Mnesia是一个分布式数据库管理系统,适合于电信和其它需要持续运行和具备软实时特性的Erlang应用,越来越受关注和使用,但是目前Mnesia资料却不多,很多都只有官方的用户指南。下面的内容将着重说明 如何做 Mnesia ...
Erlang 中的Module级别热部署,可以看看
erlang系统自带的数据库mnesia的官方文档。
Mnesia是一个分布式数据库管理系统(DBMS),适合于电信和其它需要持续运行和具备软实时 特性的Erlang应用。
erlang23.3安装包,部署RabbitMQ所需环境之一
Mnesia table fragmentation 过程及算法分析。erlang就算在64位下dets的空间限制仍旧是2g,同样影响了mnesia,如果有更大需求,就必须使用Mnesia的 table fragmentation 技术
ErlangB和ErlangC计算工具(exe可执行文件+excel两个) ErlangB和ErlangC计算工具(exe可执行文件+excel两个)
erlang 安装包
erlang入门电子书 erlang编程 Introducing Erlang,作者Simon.St.Laurent
Mnesia是一个分布式数据库管理系统(DBMS),适合于电信和其它需要持续运行和具备软实时特性的Erlang应用,是构建电信应用的控制系统平台——开放式电信平台(OTP)的一部分。
erlang otp25 win安装包