Ubuntu 16.04 配置Raft(分布式共识协议)及Maven+Java运行环境

本文用于在Ubuntu 16.04中配置分布式共识协议 Raft, 运行环境为Java + Maven, 开辟端口为 8051-8080, demon中实际使用端口为8051-8053

Raft软件包下载地址: https://github.com/Limber0117/raft-java

==================   开始配置  ===========

第一步: 配置Java + Maven 运行环境 

1. 目前Oracle已经关闭了 Ubuntu16.04 上面Java 8 的下载通道,因此使用 OpenJDK 8来进行安装

sudo apt-get update

sudo apt-get install openjdk-8-jdk

2. 安装完成后验证:

java -version

3. 配置环境变量:将环境变量信息放入到 /etc/environment 文件,注意需要使用sudo

echo "JAVA_HOME=$(which java)" | sudo tee -a /etc/environment

source /etc/environment

echo $JAVA_HOME

4. 安装Maven:

sudo apt-get -y install maven

5. 验证: mvn --version

6. 配置Maven

新建maven的环境变量文件,放在 /etc/profile.d/maven.sh

sudo nano /etc/profile.d/maven.sh

输入下面代码,注意各路径要根据实际情况输入,可以使用 mvn --version  java -version来查看具体路径, 等号前后不能有空格。

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

export M2_HOME=/usr/share/maven

export MAVEN_HOME=/usr/share/maven

export PATH=${M2_HOME}/bin:${PATH}:${JAVA_HOME}/bin

保存并退出文档

启用环境变量设置

source /etc/profile.d/maven.sh

7. 自动导入环境变量

在用户根目录下修改 .bashrc文件,使每次用户打开shell时都自动更新环境变量

sudo nano ~/.bashrc

在文件末尾输入:   

source /etc/environment

source /etc/profile.d/maven.sh

保存并退出 ( ctrl+o   ctrl+x)

第二步:安装Raft并修改配置文件

1. 从github上下载Raft源代码到Ubuntu任意位置并解压缩

2. 进入到文件夹中编辑配置文件

cd  ...xxx../raft-java-master

cd raft-java-example

修改 deploy.sh,默认会在本机开启三个Raft cluster server (用进程代表),使用 localhost或者127.0.0.1为IP地址,使用端口为 8051-8053

nohup ./bin/run_server.sh ./data "127.0.0.1:8051:1,127.0.0.1:8052:2,127.0.0.1:8053:3" "127.0.0.1:8051:1" 

上方代码中, 连续的三个IP地址和端口用来指定Raft Cluster中的三个服务器和对应通讯端口。 最后的IP地址用来指定本机(本进程)使用的地址和端口。

如果需要配置更多服务器,则可以对应修改。 

每个IP地址后面的序号为每台服务器的唯一ID,不能重复。

1) 第一次配置Raft

cd raft-java-example

sh deploy.sh

2) 之后运行可以仅执行以下 nohup指令(建议放入sh文件)。

#start up the first server

cd env/example1

nohup ./bin/run_server.sh ./data "127.0.0.1:8051:1,127.0.0.1:8052:2,127.0.0.1:8053:3" "127.0.0.1:8051:1" 

cd -

#start up the second server

cd env/example2

nohup ./bin/run_server.sh ./data "127.0.0.1:8051:1,127.0.0.1:8052:2,127.0.0.1:8053:3" "127.0.0.1:8052:2"

cd -


#start up the third server

cd env/example3

nohup ./bin/run_server.sh ./data "127.0.0.1:8051:1,127.0.0.1:8052:2,127.0.0.1:8053:3" "127.0.0.1:8053:3"

cd -

 

第三步:利用Raft服务读写文件

 客户端在向Raft集群读写文件时,需要指定Cluster中现有的服务器。 如果发送的执行仅含有key,则代表读;同时含有key和value,则代表写。

向Raft写数据:

cd env/client ./bin/run_client.sh "list://localhost:8051,localhost:8052,localhost:8053" hell fadfsa

 从Raft读数据:

cd env/client ./bin/run_client.sh "list://localhost:8051,localhost:8052,localhost:8053" hell

请注意:

1) 向Raft提交的数据中,key必须唯一

2)从Raft读取数据时,key必须存在

3)由于本Raft程序使用nohup提交到后台执行,在退出terminal之后进程会继续执行,因此需要手动关闭  

  > 利用top 或者 ps 查询出PID

  > 然后使用  #kill -9 PID 逐个关闭

Ubuntu 16.04 配置Raft(分布式共识协议)及Maven+Java运行环境_第1张图片

你可能感兴趣的:(Ubuntu 16.04 配置Raft(分布式共识协议)及Maven+Java运行环境)