原理问题
主分片是4 副本数是2 ,副本分片等于就是8个,所有分片等于加起来分片数是12,主分片可以写入,副本分片只可读
一个分片最大存储30G数据
elasticsearch7以上 xpack基础版本免费了,不用破解
https://www.elastic.co/cn/subscriptions 免费功能界面
集群必须强制开启tls后才能开启密码认证
参考文档
http://www.pianshen.com/article/9207198635/
配置文件详解
https://www.cnblogs.com/han-luo/p/10444754.html
https://abcops.cn/archives/981#toc_5
https://blog.51cto.com/13740724/2438072
部署环境
内核版本 |
Linux iZ8vbc1ax05oc6vsu6u24kZ 3.10.0-1062.9.1.el7.x86_64 #1 SMP Fri Dec 6 15:49:49 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux |
系统版本 |
CentOS Linux release 7.7.1908 (Core) |
jdk版本 |
openjdk version "13.0.1" 2019-10-15 |
elasticsearch版本 |
elasticsearch 7.5.1 |
elasticsearch和jdk的版本对应关系
https://www.elastic.co/cn/support/matrix#matrix_jvm
安装部署单点
上传tar包,并解压缩
创建安装目录并创建运行用户(es不能用root用户运行,创建普通用户)
mkdir -p /jesong/cluster/
useradd -d /home/elastic elastic -s /sbin/nologin
修改环境参数
echo "vm.max_map_count=262144" >>/etc/sysctl.conf
sysctl -p
echo -e "elastic soft memlock unlimited \nelastic hard memlock unlimited" >> /etc/security/limits.conf
调整jvm参数
vim /jesong/cluster/elasticsearch01/config/jvm.options #使用内存大小,一般不超过百分之50
-Xms256m
-Xmx256m
如果未配置java jdk环境变量那么es会用自带的java jdk(es版本和jdk版本对应)如果发现未覆盖,可以到官网下载未捆绑jdk的版本
vim /etc/profile
配置系统环境变量
JAVA_HOME=/usr/local/java/jdk1.8
JRE_HOME=/usr/local/java/jdk1.8/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
授权普通用户
chown -R elastic. /jesong/cluster/elasticsearch
修改配置文件
vim elasticsearch.yml
node.name: node-1
path.data: /jesong/cluster/elasticsearch01/data2
path.logs: /jesong/cluster/elasticsearch01/data2
network.host: 172.26.103.59
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
#xpack密码认证配置
#xpack.security.enabled: true
#xpack.license.self_generated.type: basic
#xpack.security.transport.ssl.enabled: true
启动
sudo -u elastic nohup /usr/local/elasticsearch/bin/elasticsearch -p /usr/local/elasticsearch/elasticsearch.pid -d
如果想迁移data目录,先停止es,然后把data目录拷贝到想要迁移得位置,更改配置文件路径然后启动即可。(记得目录属主属组问题)
安装部署集群
上传tar包,并解压缩
创建安装目录并创建运行用户(es不能用root用户运行,创建普通用户)
mkdir -p /jesong/cluster/
useradd -d /home/elastic elastic -s /sbin/nologin
复制三份文件
cp -a elasticsearch-7.5.1/ /jesong/cluster/elasticsearch01
cp -a elasticsearch-7.5.1/ /jesong/cluster/elasticsearch02
cp -a elasticsearch-7.5.1/ /jesong/cluster/elasticsearch03
修改环境参数
echo "vm.max_map_count=262144" >>/etc/sysctl.conf
sysctl -p
echo -e "elastic soft memlock unlimited \nelastic hard memlock unlimited" >> /etc/security/limits.conf
修改配置文件
双击即可打开
#集群的名称
cluster.name: easyliao-brd100
#节点名称,其余两个节点分别为node-2 和node-3
node.name: node-3
#指定该节点是否有资格被选举成为master节点,默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master
node.master: true
#允许该节点存储数据(默认开启)
node.data: true
#索引数据的存储路径
path.data: /jesong/cluster/elasticsearch03/data/
#日志文件的存储路径
path.logs: /jesong/cluster/elasticsearch03/logs/
#设置为true来锁住内存。因为内存交换到磁盘对服务器性能来说是致命的,当jvm开始swapping时es的效率会降低,所以要保证它不swap
bootstrap.memory_lock: true
#绑定的ip地址
network.host: 172.26.103.63
#设置对外服务的http端口,默认为9200
http.port: 9203
# 设置节点间交互的tcp端口,默认是9300
transport.tcp.port: 9303
#Elasticsearch将绑定到可用的环回地址,并将扫描端口9300到9305以尝试连接到运行在同一台服务器上的其他节点。
#这提供了自动集群体验,而无需进行任何配置。数组设置或逗号分隔的设置。每个值的形式应该是host:port或host
#(如果没有设置,port默认设置会transport.profiles.default.port 回落到transport.tcp.port)。
#请注意,IPv6主机必须放在括号内。默认为127.0.0.1, [::1]
discovery.zen.ping.unicast.hosts: ["172.26.103.63:9301", "172.26.103.63:9302", "172.26.103.63:9303"]
#如果没有这种设置,遭受网络故障的集群就有可能将集群分成两个独立的集群 - 分裂的大脑 - 这将导致数据丢失
discovery.zen.minimum_master_nodes: 2
#只要配置数量的数据或主节点已加入集群,即可恢复
gateway.recover_after_nodes: 2
#
#设置是否可以通过正则或者_all删除或者关闭索引库,默认true表示必须需要显式指定索引库名称,生产环境建议设置为true,删除索引库的时候必须显式指定,否则可能会误删索引库中的索引库
action.destructive_requires_name: true
#
cluster.initial_master_nodes: ["node-1","node-2","node-3"]
调整jvm参数
vim /jesong/cluster/elasticsearch01/config/jvm.options #使用内存大小,一般不超过百分之50
-Xms256m
-Xmx256m
如果未配置java jdk环境变量那么es会用自带的java jdk(es版本和jdk版本对应,)
vim /etc/profile
配置系统环境变量
JAVA_HOME=/usr/local/java/jdk1.8
JRE_HOME=/usr/local/java/jdk1.8/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
授权普通用户权限
chown -R elastic. /jesong/cluster/elasticsearch01
chown -R elastic. /jesong/cluster/elasticsearch02
chown -R elastic. /jesong/cluster/elasticsearch03
启动es各节点
-p 指定pid -d 后台运行
sudo -u elastic nohup /usr/local/elasticsearch/bin/elasticsearch -p /usr/local/elasticsearch/elasticsearch.pid -d
增加x-pack密码验证
单点增加xpack
修改配置文件
node.name: node-1
path.data: /jesong/cluster/elasticsearch01/data2
path.logs: /jesong/cluster/elasticsearch01/data2
network.host: 172.26.103.59
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true
启动es
sudo -u elastic nohup /usr/local/elasticsearch/bin/elasticsearch -p /usr/local/elasticsearch/elasticsearch.pid -d
配置密码(进入bin目录)
./elasticsearch-setup-passwords –help #查看参数
./elasticsearch-setup-passwords interactive #手动输入各密码
使用密码连接es,验证是否正常
curl --user elastic:111111 -XGET 'http://172.26.103.59:9200/_cat/nodes?v'
集群增加xpack密码验证(集群增加验证强制开启ssl,不然报错)
进入其中一台的bin目录生成ca证书
elasticsearch-certutil ca
elasticsearch-certutil cert --ca elastic-stack-ca.p12
创建证书存放目录
mkdir -p /jesong/cluster/elasticsearch01/config/certs/
mv /jesong/cluster/elasticsearch01/elastic-* /jesong/cluster/elasticsearch01/config/certs/
如果是用root创建的目录和证书,别忘记授权
chown -R elastic. /jesong/cluster/elasticsearch01/config/certs/
把证书复制到其他节点
cp -a /jesong/cluster/elasticsearch01/config/certs/ /jesong/cluster/elasticsearch02/config/certs/
cp -a /jesong/cluster/elasticsearch01/config/certs/ /jesong/cluster/elasticsearch03/config/certs/
修改各节点配置文件
vim config/elasticsearch.yml
#开启安全功能
xpack.security.enabled: true
#集群内部通信加密
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12
启动各节点(启动后应该是连不上的,配置完密码后即可链接)
sudo -u elastic nohup /jesong/cluster/elasticsearch01/bin/elasticsearch -p /jesong/cluster/elasticsearch01/elasticsearch.pid -d
配置密码
进入任意节点bin目录,配置各账户密码, elastic为管理员
./elasticsearch-setup-passwords interactive
配置完成后测试各节点是否能正常连接
curl --user elastic:marbless -XGET 'http://172.26.103.63:9202/_cat/nodes?v'
此时已经部署完成
es命令
查看节点信息
curl -XGET 'http://172.26.103.63:9202/_cat/nodes?v'
curl --user elastic:marbless -XGET 'http://172.26.103.63:9202/_cat/nodes?v'
查看集群状态
curl -XGET 'http://172.26.103.63:9202/_cat/health?v'
curl -XGET 'http://172.26.103.63:9201/_cluster/health?pretty'
查看master节点信息
curl -XGET 'http://172.26.103.63:9202/_cat/master?v'
创建一个索引
curl -XPUT 'http://172.26.103.63:9202/test_one?pretty' test_one:索引名字
查看当前所有索引
curl '192.168.1.4:9200/_cat/indices?v'
删除指定索引
curl -XDELETE 192.168.1.4:9200/system-log-2019.05
删除多个索引
curl -XDELETE 192.168.1.4:9200/system-log-2019.05,system-log-2019.05
删除所有索引
curl -XDELETE 192.168.1.4:9200/_all
curl -XGET 'http://172.26.103.63:9201/cluster/settings
{
"transient" : {
"cluster.routing.allocation.exclude._ip" : "10.0.0.1"
}
}