虚拟机内elasticsearch集群的详细安装过程

来源:互联网 发布:java jna调用64位dll 编辑:程序博客网 时间:2024/06/05 02:11

elasticsearch 是一个全文检索工具,具体的强大之处我就不多说了。elasticsearch 集群部署功能更强大,这里就来记录一下我在虚拟机内的ubuntu上部署elasticsearch集群所爬过的坑。

一、安装虚拟机和ubuntu

VMWare或virtualBox虚拟机都可以,具体安装我就不介绍了,安装完虚拟机后就是下载ubuntu镜像文件(.iso),下载地址:https://www.ubuntu.com/download/desktop/thank-you?country=CN&version=16.04.2&architecture=amd64
。然后就是在虚拟机内安装ubuntu,网上有相关教程,我也就不多说了,按照步骤走下来就可以了。

二、安装jdk

因为elasticsearch是用java写的,所以第一步是安装java运行环境jdk,好吧,安装jdk前我们还是先把相关工具安装一下吧。

1、安装add-apt-repository命令

sudo apt-get install python-software-propertiessudo apt-get install software-properties-common

2、安装jdk

2.1 使用ppa/源方式安装

sudo add-apt-repository ppa:webupd8team/javasudo apt-get update

2.2 安装oracle-java-installer

sudo apt-get install oracle-java8-installer

我们这里安装的是jdk8,如果你想安装其它版本修改下版本号就可以了。

2.3 设置jdk环境变量

sudo update-java-alternatives -s java-8-oracle

这儿对应你安装的jdk版本。

2.4 测试jdk是否安装成功

java -version

这时你看到下面这些信息就说明你安装jdk成功了,并且环境变量也设置好了。

java version "1.8.0_131"Java(TM) SE Runtion Environment (build 1.8.0_131-b11)Java HotSpot(TM) 64-Bit Server VM (build 25.131=b11, mixed mode)

三、安装elasticsearch

我这里是通过下载压缩包进行安装的,就将压缩包放在我个人用户(qbian)的目录下了。执行以下命令获取elasticsearch-5.3.2压缩包。

cd /home/qbianwget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.3.2.zip

下载完成后接下来就是解压运行了。

sudo unzip elasticsearch-5.3.2.zip

四、启动elasticsearch

进入elasticsearch解压目录

cd /home/qbian/elasticsearch-5.3.2./bin/elasticsearch

执行完以上命令后报不能使用root用户启动,好吧,这是elasticsearch为了安全考虑,不容许root用户启动,那我们需要创建一个elasticsearch用户。

// 1.创建用户组groupadd es// 2.创建es用户并将其添加到es用户组useradd  es(用户名) -g es(组名) -p 123456(密码)

以上我们创建了es用户组和es用户,并且将es用户添加到了es用户组。接下来我们将解压后的elasticsearch-5.3.2文件夹所属用户修改为es用户。

chown -R es:es elasticsearch-5.3.2

执行完以上命令后我们可以用ll查看elasticsearch-5.3.2文件所属用户。这时你应该看到的是elasticsearch-5.3.2所属的用户组和用户都是es。以上所有命令都是root用户操作的,我们加下来切换到新创建的es用户。

su es

执行完以上命令后你应该已经切换到es用户下了,然后我们再来启动elasticsearch。

cd /home/qbian/elasticsearch-5.3.2./bin/elasticsearch

执行完上述命令后你应该还会看到启动失败的异常信息。信息大概意思是说jvm启动需要的最小内容是2g,而我们的虚拟机内存只有1g。额,这是什么原因?原来是我们安装ubuntu时安装默认步骤走下来后我们的虚拟机可用的内存只有1g。好吧,知道原因就好办了,我们就来设置下虚拟机内存大小。

1、VMWare设置虚拟机内存大小:虚拟机菜单栏》虚拟机》设置》内存,这里我们将内存调到2g。

2、virtualBox设置虚拟机内存大小:virtualBox管理器》点击->系统》主板》内存大小,这里我们将内存调到2g。

内存设置完后重启下虚拟机。接着我们切换到es用户,进入elasticsearch-5.3.2文件夹,执行./bin/elasticsearch启动命令。这时还会报max virtual memory areas vm.max_map_county [65530] is too low, increase to at least [262144]异常,这个异常说明虚拟机内存还是没有生效,好吧,我们切换到root用户再通过命令修改下内存大小。

sudo sysctl -w vm.max_map_count=262144

这时再切换回es用户启动elasticsearch就可用正常启动了。

./bin/elasticsearch -d

上述命令是指后台启动elasticsearch,然后我们来测试一下。

curl http://localhost:9200/// 以下是返回信息{  "name" : "O4oAgaF",  "cluster_name" : "elasticsearch",  "cluster_uuid" : "yjyPIl45QMeA1PDVaTexAA",  "version" : {    "number" : "5.3.2",    "build_hash" : "3068195",    "build_date" : "2017-04-24T16:15:59.481Z",    "build_snapshot" : false,    "lucene_version" : "6.4.2"  },  "tagline" : "You Know, for Search"}

这说明我们启动成功了,好吧,我们再来看看虚拟机ip是多少,执行ifconfig命令后查看的我虚拟机ip是192.168.1.113。我们再来访问一下curl http://192.168.1.113:9200,结果Connection refused,额,这又是什么鬼?原来是我们elasticsearch的配置信息需要修改一下,来吧,再修改一下配置文件。

vim /config/elasticsearch.yml

修改如下

# ---------------------------------- Network -----------------------------------## Set the bind address to a specific IP (IPv4 or IPv6):# 下面是本机ipnetwork.host: 192.168.1.113## Set a custom port for HTTP:# 下面是es通过rest http接口访问的端口号http.port: 9200

然后保存修改的配置,重新启动elasticsearch。这时再通过curl 192.168.1.113:9200就可用正常访问了。

五、搭建elasticsearch集群

以上只是在虚拟机内将elasticsearch启动起来并且可以访问罢了,我们怎么将虚拟机内的elasticsearch和我们主机内的elasticsearch组成集群呢,这时就需要修改配置信息了(/config/elasticsearch.yml)。我们主机的ip是192.168.1.112,虚拟机ip是192.168.1.113,并且虚拟机是通过网桥的方式连接到intent的,所以主机和虚拟机之间完全可以互ping的通。具体的elasticsearch.yml修改如下:

# ---------------------------------- Cluster -----------------------------------# 以下配置的test是集群名称,主机和虚拟机配置的名称需相同cluster.name: test# ------------------------------------ Node ------------------------------------# node-1是节点名称,主机和虚拟机配置的节点名称不能一样,另一个节点名称为node-2node.name: node-1node.master: truenode.data: true# ---------------------------------- Network -----------------------------------network.host: 192.168.1.112## Set a custom port for HTTP:#http.port: 9200http.cors.enabled: truehttp.cors.allow-origin: "*"# --------------------------------- Discovery ----------------------------------discovery.zen.ping.unicast.hosts: ["192.168.1.112:9300", "192.168.1.113:9300"]discovery.zen.minimum_master_nodes: 2# ---------------------------------- Gateway -----------------------------------gateway.recover_after_nodes: 2

以上配置信息有几点需要注意的:

1、cluster.name: test,这是集群名称的配置,所有加入该集群的elasticsearch服务都必须相同,elasticsearch就是通过cluster.name判断是否是同一个集群的。

2、node.name: node-1,这是当前节点的名称,这个在同一个集群内不可重复,每一个节点的名称要唯一。我在192.168.1.112的配置的节点名称是node-1,在192.168.1.113配置的节点名称是node-2。

3、node.master: true,这是说明该节点有竞选主节点(master)的机会,当主节点宕机后会从其它node.master: true的从节点内选举出一个作为主节点。

4、http.port: 9200,这是http rest接口访问的端口号,还有一个9300端口是给节点之间同步数据即调用和通信用的。

5、http.cors.enabled: truehttp.cors.allow-origin: "*",这两个配置是开启跨域请求,我们在接下来安装head集群可视化插件时需要用到。
6、discovery.zen.ping.unicast.hosts: ["192.168.1.112:9300", "192.168.1.113:9300"],这个就是当前集群的所有节点的地址,这里的port填写的是9300并不是9200,上面也提到了,9300是给各节点之间通信使用的。

上面的配置完成后就可以启动主机和虚拟机内的elasticsearch服务了,但是我们怎么知道它们组成了集群呢?

六、安装集群可视化插件elasticsearch-head

安装elasticsearch-head插件比较烦,需要安装git,node,npm,grunt,这里就不说这几个工具的安装过程了。然后通过下面命令下载安装elasticsearch-head。

cd /home/qbiangit clone git://github.com/mobz/elasticsearch-head.gitcd elasticsearch-headnpm install

安装完后就是启动elasticsearch-head了,

cd elasticsearch-headnpm run start

执行完上面的命令后你就可以看到elasticsearch-head已经启动成功了,并且监听在9100端口,我们可以通过http://ip:9100访问到。这时我们再将虚拟机和主机的elasticsearch服务重新启动一下就可以在http://ip:9100查看到我们当前的集群状态了。

以上全部就是我在虚拟机内安装elasticsearch集群所遇到的全部坑了,心好累,以无力吐槽,幸好最后安装成功并且集群测试通过(集群状态下各接口测试和宕机一个节点后各接口测试都通过)。

下期我们对elasticsearch-demo代码级别的使用案例进行简单的讲解,包括集群调用,保存数据,查询数据,高亮匹配查询结果等。

我的博客:https://qbian61.github.io/

0 0
原创粉丝点击