阿里云、腾讯云不同服务商不同机房配置elasticsearch集群

1447 篇文章 12 订阅
1447 篇文章 7 订阅
    当初为了省钱双十一新用户优惠活动,搞了一台2核4g[阿里云](https://l.gushuji.site/aliyun),一台2核4g[腾讯云](https://l.gushuji.site/tencent)打算自己搭建微服务、分布式的项目,谁知道这是噩梦的开始.....
    学习es的使用之后,正好自己也有两台云服务器,那就开始es集群吧,因为是不同的运营商、不同的机房,只能通过外网进行es集群的互相访问,但是一直搭不起来,这个问题困扰了我三天,最后,瞎猫撞死耗子,es集群终于起来了
    tip:正常es的集群是同一厂商,同一机房,在解决这个问题时,我尝试买了一台一周的2核4g的[阿里云](https://l.gushuji.site/aliyun)和我的另一台[阿里云](https://l.gushuji.site/aliyun)做es集群,同样的配置,分分钟起来...
    好了,步入正题,下面开始分享一下我的es集群搭建及配置文件
    第一步: 毋庸置疑的是把服务器的端口号开放,在这一步时我在[腾讯云](https://l.gushuji.site/tencent)遇到了一个问题,最后发现就是因为这个问题导致我的集群一直搭建不起来,我的[腾讯云](https://l.gushuji.site/tencent)访问端口把es的开放了,但是防火墙没有打开,[腾讯云](https://l.gushuji.site/tencent)需要把防火墙打开,并且在防火墙把端口开放,下面是centos7开放端口的命令


firewall-cmd --permanent --zone=public --add-port=9200-9200/tcp
firewall-cmd --permanent --zone=public --add-port=9300-9300/tcp
firewall-cmd --reload 


    第二步配置es的elasticsearch.yml文件
    第一个节点配置:


#集群名称
cluster.name: my-application
##节点名称
node.name: node-1
#是不是有资格主节点
node.master: true
#是否存储数据
node.data: true
#最⼤集群节点数
node.max_local_storage_nodes: 3
#⽹关地址
#network.host: 0.0.0.0
#
#设置绑定的ip地址,**这里使用****内网ip******
network.bind_host: 0.0.0.0
#设置其它节点和该节点交互的ip地址,**把他设置为外网IP**
network.publish_host: 139.196.228.177
#端⼝
http.port: 9200
#内部节点之间沟通端⼝
transport.tcp.port: 9300
#es7.x 之后新增的配置,写⼊候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["139.196.228.177:9300","122.152.193.118:9300"]
#es7.x 之后新增的配置,初始化⼀个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node-1","node-2"]

第二个节点配置信息:

cluster.name: my-application
#节点名称
node.name: node-2
#是不是有资格主节点
node.master: true
#是否存储数据
node.data: true
#最⼤集群节点数
node.max_local_storage_nodes: 3
#⽹关地址
#network.host: 0.0.0.0
#设置绑定的ip地址,**这里使用****内网ip******
network.bind_host: 0.0.0.0
#设置其它节点和该节点交互的ip地址,**把他设置为外网IP**
network.publish_host: 122.152.193.118
#端⼝
http.port: 9200
#内部节点之间沟通端⼝
transport.tcp.port: 9300
#es7.x 之后新增的配置,写⼊候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["139.196.228.177:9300","122.152.193.118:9300"]
#es7.x 之后新增的配置,初始化⼀个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node-1","node-2"]

第三个节点配置信息:

cluster.name: my-application
#节点名称
node.name: node-3
#是不是有资格主节点
node.master: false
#是否存储数据
node.data: true
#最⼤集群节点数
node.max_local_storage_nodes: 3
#⽹关地址
#network.host: 0.0.0.0
#设置绑定的ip地址,**这里使用****内网ip******
network.bind_host: 0.0.0.0
#设置其它节点和该节点交互的ip地址,**把他设置为外网IP**
network.publish_host: 122.51.51.246
#端⼝
http.port: 9200
#内部节点之间沟通端⼝
transport.tcp.port: 9300
#es7.x 之后新增的配置,写⼊候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["139.196.228.177:9300","122.152.193.118:9300"]
#es7.x 之后新增的配置,初始化⼀个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node-1","node-2"]

当然了,如果想管理方便的话需要kibana,下面我把kibana的配置也展示一下,配置文件kibana.yml的最下边加入

server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://139.196.228.177:9200"]
kibana.index: ".kibana"

ok,配置好了马上要启动es了,到es的bin目录中, -d 表示后台运行

./elasticsearch -d

这个时候你的es是起不来的,我当时遇到了两个错误,第一个错误如下:

[2019-11-29T13:25:53,827][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [node-1] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:163) ~[elasticsearch-7.2.0.jar:7.2.0]
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150) ~[elasticsearch-7.2.0.jar:7.2.0]
    at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-7.2.0.jar:7.2.0]
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-7.2.0.jar:7.2.0]
    at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-7.2.0.jar:7.2.0]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115) ~[elasticsearch-7.2.0.jar:7.2.0]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-7.2.0.jar:7.2.0]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
    at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:105) ~[elasticsearch-7.2.0.jar:7.2.0]
    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:172) ~[elasticsearch-7.2.0.jar:7.2.0]
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:349) ~[elasticsearch-7.2.0.jar:7.2.0]
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) ~[elasticsearch-7.2.0.jar:7.2.0]
    ... 6 more

是你用root起的es,你需要在linux创建一个用户,并且分配目录权限

useradd testuser  创建用户testuser
passwd testuser  给已创建的用户testuser设置密码
chown -R root:root /tmp 修改tmp目录所属用户为root,用户组为root
chown [-R]账户名 文件名 或者 chown [-R] 账户名:组名 文件名
chmod -R 777 /tmp 修改 tmp 目录为可写权限
这两个配置权限根据自己的情况选择吧

那第二个问题就是

ERROR: [2] bootstrap checks failed

解决方法:

编辑 /etc/security/limits.conf,追加以下内容;
* soft nofile 65536
* hard nofile 65536
此文件修改后需要重新登录用户,才会生效

编辑 /etc/sysctl.conf,追加以下内容:
vm.max_map_count=655360
保存后,执行:
sysctl -p

接下来进入到kibana的bin目录中执行后台运行,这里执行完命令后输入exit,否则后台运行失败

nohup ../bin/kibana &

好了,至此es的集群搭建完成,本人也是小白,还希望有大神指教,谢谢

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值