Elasticsearch

最近需要升级一下Elasticsearch,简单记录一下过程

1. 卸载旧版本 Elasticsearch

sudo apt-get remove elasticsearch
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
下列软件包将被【卸载】:
  elasticsearch
升级了 0 个软件包,新安装了 0 个软件包,要卸载 1 个软件包,有 144 个软件包未被升级。
解压缩后将会空出 37.1 MB 的空间。
您希望继续执行吗? [Y/n] y
(正在读取数据库 ... 系统当前共安装有 288092 个文件和目录。)
正在卸载 elasticsearch (5.4.3) ...
Stopping elasticsearch service... * Stopping Elasticsearch Server                         [ OK ] 
 OK
update-rc.d: /etc/init.d/elasticsearch exists during rc.d purge (use -f to force)
Deleting log directory... OK

2. 官网下载最新ES安装包

nslabdns@nslab:~/HJ/Elasticsearch$ ls
elasticsearch-5.6.0.deb  kibana-5.6.0-amd64.deb
安装 elasticsearch-5.6.0
sudo dpkg -i elasticsearch-5.6.0.deb
正在选中未选择的软件包 elasticsearch。
(正在读取数据库 ... 系统当前共安装有 287977 个文件和目录。)
正准备解包 elasticsearch-5.6.0.deb  ...
正在解包 elasticsearch (5.6.0) ...
正在设置 elasticsearch (5.6.0) ...
正在安装新版本的配置文件 /etc/elasticsearch/jvm.options ...
正在安装新版本的配置文件 /usr/lib/systemd/system/elasticsearch.service ...
正在安装新版本的配置文件 /etc/init.d/elasticsearch ...
正在处理用于 ureadahead (0.100.0-16) 的触发器 ...
ureadahead will be reprofiled on next reboot

3. 启动 Elasticsearch

获取当前Elasticsearch安装位置

whereis elasticsearch
elasticsearch: /etc/elasticsearch /usr/share/elasticsearch

/etc/elasticsearch 这里的yml文件是elasticsearch的配置文件
/usr/share/elasticsearch 这里是elasticsearch的安装目录

运行 Elasticsearch

cd /usr/share/elasticsearch
sudo /etc/init.d/elasticsearch start
 * Starting Elasticsearch Server                                                          [ OK ] 

进入 http://172.29.152.152:9200/ 若显示

{
  "name" : "b-LXGl-",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "0xTA4nnAQuOiNSoipvzLGQ",
  "version" : {
    "number" : "5.6.0",
    "build_hash" : "781a835",
    "build_date" : "2017-09-07T03:09:58.087Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.0"
  },
  "tagline" : "You Know, for Search"
}

则 elasticsearch 安装完毕

Kibana

1.下载和安装

下载地址

https://www.elastic.co/downloads/kibana

2.配置kibana

编辑config/kibana.yml

vim config/kibana.yml

按照要求修改为
elasticsearch.url: "http://10.1.5.66:9200"…其他部分没有改动,不需要修改

3.启动

进入Kibana的安装目录后执行命令

nohup bin/kibana &

若访问
http://localhost:5601
能正常显示则表示安装完毕

配置 Elasticsearch

在service目录下有个elasticsearch.conf配置文件,主要是设置一些Java运行环境参数,其中比较重要的是下面的
参数:
# es的home路径,不用用默认值就可以set.default.ES_HOME=
#分配给es的内存大小
set.default.ESHEAPSIZE=1024
#启动等待超时时间(以秒为单位)wrapper.startup.timeout=300
#关闭等待超时时间(以秒为单位)
wrapper.shutdown.timeout=300
#ping超时时间(以秒为单位)
wrapper.ping.timeout=300

配置浅涉

elasticsearch的config文件夹里面有两个配置文件:elasticsearch.yml和logging.yml,第一个是es的基本配置文件,第二个是日志配置文件,es也是使用log4j来记录日志的,所以logging.yml里的设置按普通log4j配置文件来设置就行了。下面主要讲解下elasticsearch.yml这个文件中可配置的东西。

cluster.name:elasticsearch配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。

node.name:"FranzKafka"节点名,默认随机指定一个name列表中名字,该列表在es的jar包中config文件夹里name.txt文件中,其中有很多作者添加的有趣名字。

node.master:true指定该节点是否有资格被选举成为node,默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master。

node.data:true指定该节点是否存储索引数据,默认为true。

index.numberofshards:5设置默认索引分片个数,默认为5片。

index.numberofreplicas:1设置默认索引副本个数,默认为1个副本。

path.conf:/path/to/conf设置配置文件的存储路径,默认是es根目录下的config文件夹。

path.data:/path/to/data设置索引数据的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号隔开,例:path.data:/path/to/data1,/path/to/data2

path.work:/path/to/work设置临时文件的存储路径,默认是es根目录下的work文件夹。

path.logs:/path/to/logs设置日志文件的存储路径,默认是es根目录下的logs文件夹

path.plugins:/path/to/plugins设置插件的存放路径,默认是es根目录下的plugins文件夹

bootstrap.mlockall:true设置为true来锁住内存。因为当jvm开始swapping时es的效率会降低,所以要保证它不swap,可以把ESMINMEM和ESMAXMEM两个环境变量设置成同一个值,并且保证机器有足够的内存分配给es。同时也要允许elasticsearch的进程可以锁住内存,linux下可以通过ulimit-l unlimited命令。

network.bind_host:192.168.0.1设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0。

network.publish_host:192.168.0.1设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址。

network.host:192.168.0.1这个参数是用来同时设置bindhost和publishhost上面两个参数。

transport.tcp.port:9300设置节点间交互的tcp端口,默认是9300。

transport.tcp.compress:true设置是否压缩tcp传输时的数据,默认为false,不压缩。

http.port:9200设置对外服务的http端口,默认为9200。

http.maxcontentlength:100mb设置内容的最大容量,默认100mb

http.enabled:false是否使用http协议对外提供服务,默认为true,开启。

gateway.type:localgateway的类型,默认为local即为本地文件系统,可以设置为本地文件系统,分布式文件系统,Hadoop的HDFS,和amazon的s3服务器,其它文件系统的设置方法下次再详细说。
gateway.recoverafternodes:1设置集群中N个节点启动时进行数据恢复,默认为1。

gateway.recoveraftertime:5m设置初始化数据恢复进程的超时时间,默认是5分钟。

gateway.expected_nodes:2设置这个集群中节点的数量,默认为2,一旦这N个节点启动,就会立即进行数据恢复。

cluster.routing.allocation.nodeinitialprimaries_recoveries:4初始化数据恢复时,并发恢复线程的个数,默认为4。

cluster.routing.allocation.nodeconcurrentrecoveries:2添加删除节点或负载均衡时并发恢复线程的个数,默认为4。

indices.recovery.maxsizeper_sec:0设置数据恢复时限制的带宽,如入100mb,默认为0,即无限制。

indices.recovery.concurrent_streams:5设置这个参数来限制从其它分片恢复数据时最大同时打开并发流的个数,默认为5。
discovery.zen.minimummasternodes:1设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)

discovery.zen.ping.timeout:3s设置集群中自动发现其它节点时ping连接超时时间,默认为3秒,对于比较差的网络环境可以高点的值来防止自动发现时出错。

discovery.zen.ping.multicast.enabled:false设置是否打开多播发现节点,默认是true。
discovery.zen.ping.unicast.hosts:[“host1”, “host2:port”,“host3[portX-portY]”]设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点

参考文献

http://blog.csdn.net/fenglailea/article/details/52469755
http://blog.csdn.net/sinat_29581293/article/details/53888127



处身寒夜,把握星光。