`
amornio19840908
  • 浏览: 56955 次
  • 性别: 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

    ### Erlang Mnesia:分布式数据库管理系统 #### 一、引言与概述 Mnesia是一款由爱立信(Ericsson)开发并维护的分布式数据库管理系统(DBMS),它被设计用于支持电信应用以及其他需要持续运行和具备软实时特性的...

    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解决方案

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

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

    RabbitMQ安装需要的安装包

    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