`
amornio19840908
  • 浏览: 56787 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Erlang mochiweb mnesia 集群部署

阅读更多
想在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

    这个 "erlang mochiweb-test demo" 压缩包很可能是为了展示如何使用 Mochiweb 在 Erlang 中构建一个简单的 Web 应用程序或测试环境。 Mochiweb 的核心组件包括以下几个部分: 1. **HTTP 服务器**:Mochiweb 提供了...

    erlang——Mnesia用户手册.pdf

    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-mnesia-19.3.6.4-1.el7.x86_64.rpm

    erlang高性能集群

    erlang的高性能集群服务器,erlang解决方案。 供大家学习使用

    mochiweb:MochiWeb 是一个用于构建轻量级 HTTP 服务器的 Erlang 库

    MochiWeb 的最新版本可在MochiWeb 的邮件列表位于 设置 MochiWeb 环境需要 Erlang OTP,可在使用项目创建一个新的 mochiweb:make app PROJECT=project_name 要使用特定目录中的项目创建新的 mochiweb: make app ...

    erlang-18.3-1.el7.centos.x86_64.zip

    Erlang是一种高级编程语言,特别为构建分布式、并发、实时和容错系统而设计。在标题中的"erlang-18.3-1.el7.centos.x86_64.zip",我们看到的是Erlang的一个特定版本,18.3,针对64位的CentOS 7操作系统(el7)的...

    erlang-18.3-1.el7.centos.x86_64.rpm

    RabbitMQ安装需要的安装包

    高性能集群服务器Erlang解决方案

    ### 高性能集群服务器Erlang解决方案 #### Erlang简介及其特性 Erlang是一种专为构建高并发、高可用性和容错性系统而设计的编程语言与运行环境。其核心优势在于支持大规模并发处理能力,并能够实现分布式计算。...

    erlang mnesia 数据库基本查询

    Mnesia是一个分布式数据库管理系统,适合于电信和其它需要持续运行和具备软实时特性的Erlang应用,越来越受关注和使用,但是目前Mnesia资料却不多,很多都只有官方的用户指南。下面的内容将着重说明 如何做 Mnesia ...

    Mnesia用户手册.zip

    1. 分布式能力:Mnesia可以跨多个Erlang节点分布数据,这意味着你可以构建跨越多台机器的数据库集群。这提高了系统的容错性,当一个节点故障时,其他节点仍能继续提供服务。 2. 实时性:Mnesia支持事务处理,确保...

    Mnesia User's Guide

    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 ...

    mochiweb实例

    Erlang是一种并发性极强、容错性高的语言,特别适合构建分布式系统,而Mochiweb则是Erlang生态系统中的一个重要组件。 首先,我们要了解Mochiweb的核心概念。Mochiweb基于Erlang的进程模型,每个HTTP连接都会创建一...

    Erlang的高级特性和应用

    Erlang 的分布式特性使其能在多个节点之间轻松部署和管理应用程序。它内置了分布式的原语,支持cnode和jnode,进程可以在节点间自由迁移。节点间的通信高效、安全,通过epmd实现类似DNS的名称解析。OTP(Open ...

    Erlang 中的Module级别热部署

    ### Erlang中的Module级别热部署 #### 一、引言 Erlang 是一种专为构建高并发、容错性强的分布式系统而设计的编程语言。它的独特之处在于支持轻量级进程(也称为协程)和热部署能力。本文将深入探讨Erlang 中的 ...

    mnesia数据库文档

    ### Mnesia数据库:Erlang中的分布式数据库管理系统 #### 引言 Mnesia,作为Erlang编程语言的一部分,是一款由爱立信公司开发的分布式数据库管理系统(DBMS)。自1997年以来,Mnesia一直是Open Telecom Platform...

    RabbitMQ高可用集群部署1

    【RabbitMQ高可用集群部署】是实际生产环境中常见的解决方案,因为单一实例的RabbitMQ在面对高并发、高吞吐量以及消息堆积时可能存在局限性。为了提高系统的可靠性和可扩展性,采用集群模式是必要的。RabbitMQ基于...

    Mnesia用户手册(docx版)

    Mnesia 是一个强大的分布式数据库管理系统(DBMS),专门为Erlang编程语言设计,特别适用于需要高可用性、持续运行和软实时特性的电信和其他关键业务应用。这个系统允许在多个节点间同步数据,提供了一种在分布式...

Global site tag (gtag.js) - Google Analytics