搭建es集群

docker搭建es集群

名称机器ip
es-node1
192.168.48.18
es-node2
192.168.48.22
es-node3
192.168.48.17

 

es-node1.yml

cluster.name: elasticsearch-cluster  #集群名称
node.name: es-node1 #节点名称
network.bind_host: 0.0.0.0  #可访问节点的地址
network.publish_host: 192.168.48.18   
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true #是否主节点
node.data: true  #是否数据节点
discovery.zen.ping.unicast.hosts: ["192.168.48.17:9300","192.168.48.22:9300","192.168.48.18:9300"]
discovery.zen.minimum_master_nodes: 2    # 配置当前集群中最少具有 master 资格节点数,对于多于两个节点的集群环境,建议配置大于1

es-node2.yml

cluster.name: elasticsearch-cluster
node.name: es-node2
network.bind_host: 0.0.0.0
network.publish_host: 192.168.48.22
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true 
discovery.zen.ping.unicast.hosts: ["192.168.48.17:9300","192.168.48.22:9300","192.168.48.18:9300"]
discovery.zen.minimum_master_nodes: 2

es-node3.yml

cluster.name: elasticsearch-cluster
node.name: es-node3
network.bind_host: 0.0.0.0
network.publish_host: 192.168.48.17
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: false
node.data: true 
discovery.zen.ping.unicast.hosts: ["192.168.48.17:9300","192.168.48.22:9300","192.168.48.18:9300"]
discovery.zen.minimum_master_nodes: 1

 

docker运行

docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 -v /home/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml  -v /home/elasticsearch/data:/usr/share/elasticsearch/data --name elasticsearch elasticsearch:6.4.3

 

 

 

 

 

k8s搭建es集群

bootstrap.memory_lock设置成bootstrap.memory_lock: true启动es报错:

ERROR: [1] bootstrap checks failed

[1]: memory locking requested for elasticsearch process but memory is not locked

解决办法:

需要设置下系统配置文件,首先要切换到root用户,接着做以下修改:

1、修改/etc/security/limits.conf

文件最后添加以下内容:

* soft nofile 65536

* hard nofile 65536

* soft nproc 32000

* hard nproc 32000

* hard memlock unlimited

* soft memlock unlimited

2、修改/etc/systemd/system.conf

分别修改以下内容:

DefaultLimitNOFILE=65536

DefaultLimitNPROC=32000

DefaultLimitMEMLOCK=infinity

 

配置文件:elasticsearch-k8s.yml

 

  1 ---
  2 apiVersion: v1
  3 kind: ServiceAccount
  4 metadata:
  5   labels:
  6     elastic-app: elasticsearch
  7   name: elasticsearch-admin
  8   namespace: platform
  9 
 10 ---
 11 apiVersion: rbac.authorization.k8s.io/v1
 12 kind: ClusterRoleBinding
 13 metadata:
 14   name: elasticsearch-admin
 15   labels:
 16     elastic-app: elasticsearch
 17 roleRef:
 18   apiGroup: rbac.authorization.k8s.io
 19   kind: ClusterRole
 20   name: cluster-admin
 21 subjects:
 22   - kind: ServiceAccount
 23     name: elasticsearch-admin
 24     namespace: platform
 25 
 26 ---
 27 kind: Deployment
 28 apiVersion: apps/v1
 29 metadata:
 30   labels:
 31     elastic-app: elasticsearch
 32     role: master
 33   name: elasticsearch-master
 34   namespace: platform
 35 spec:
 36   replicas: 2
 37   revisionHistoryLimit: 10
 38   selector:
 39     matchLabels:
 40       elastic-app: elasticsearch
 41       role: master
 42   template:
 43     metadata:
 44       labels:
 45         elastic-app: elasticsearch
 46         role: master
 47     spec:
 48       containers:
 49         - name: elasticsearch-master
 50           image: elasticsearch:6.4.3
 51           lifecycle:
 52             postStart:
 53               exec:
 54                 command: ["/bin/bash", "-c", "sysctl -w vm.max_map_count=262144; ulimit -l unlimited;"]
 55           ports:
 56             - containerPort: 9200
 57               protocol: TCP
 58             - containerPort: 9300
 59               protocol: TCP
 60           env:
 61             - name: "cluster.name"
 62               value: "elasticsearch-cluster"
 63             - name: "bootstrap.memory_lock"   #这个配置的意义:锁定物理内存地址,防止es内存被交换出去,也就是避免es使用swap交换分区,频繁的交换,会导致IOPS变高。
 64               value: "false"
 65             - name: "discovery.zen.ping.unicast.hosts"
 66               value: "elasticsearch-discovery"
 67             - name: "discovery.zen.minimum_master_nodes"
 68               value: "2"
 69             - name: "discovery.zen.ping_timeout"
 70               value: "5s"
 71             - name: "node.master"
 72               value: "true"
 73             - name: "node.data"
 74               value: "false"
 75             - name: "node.ingest"
 76               value: "false"
 77             - name: "ES_JAVA_OPTS"
 78               value: "-Xms768m -Xmx768m"
 79           securityContext:
 80             privileged: true
 81       serviceAccountName: elasticsearch-admin
 82       tolerations:
 83         - key: node-role.kubernetes.io/master
 84           effect: NoSchedule
 85 
 86 ---
 87 kind: Service
 88 apiVersion: v1
 89 metadata:
 90   labels:
 91     elastic-app: elasticsearch
 92   name: elasticsearch-discovery
 93   namespace: platform
 94 spec:
 95   ports:
 96     - port: 9300
 97       targetPort: 9300
 98   selector:
 99     elastic-app: elasticsearch
100     role: master
101 
102 ---
103 kind: Deployment
104 apiVersion: apps/v1
105 metadata:
106   labels:
107     elastic-app: elasticsearch
108     role: data
109   name: elasticsearch-data
110   namespace: platform
111 spec:
112   replicas: 1
113   revisionHistoryLimit: 10
114   selector:
115     matchLabels:
116       elastic-app: elasticsearch
117   template:
118     metadata:
119       labels:
120         elastic-app: elasticsearch
121         role: data
122     spec:
123       containers:
124         - name: elasticsearch-data
125           image: elasticsearch:6.4.3
126           lifecycle:
127             postStart:
128               exec:
129                 command: ["/bin/bash", "-c", "sysctl -w vm.max_map_count=262144; ulimit -l unlimited;"]
130           ports:
131             - containerPort: 9200
132               protocol: TCP
133             - containerPort: 9300
134               protocol: TCP
135           volumeMounts:
136             - name: esdata
137               mountPath: /usr/share/elasticsearch/data
138           env:
139             - name: "cluster.name"
140               value: "elasticsearch-cluster"
141             - name: "bootstrap.memory_lock" #这个配置的意义:锁定物理内存地址,防止es内存被交换出去,也就是避免es使用swap交换分区,频繁的交换,会导致IOPS变高。
142               value: "false"
143             - name: "discovery.zen.ping.unicast.hosts"
144               value: "elasticsearch-discovery"
145             - name: "node.master"
146               value: "false"
147             - name: "node.data"
148               value: "true"
149             - name: "ES_JAVA_OPTS"
150               value: "-Xms768m -Xmx768m"
151           securityContext:
152             privileged: true
153       volumes:
154         - name: esdata
155           emptyDir: {}
156       serviceAccountName: elasticsearch-admin
157       tolerations:
158         - key: node-role.kubernetes.io/master
159           effect: NoSchedule
160 
161 ---
162 kind: Service
163 apiVersion: v1
164 metadata:
165   labels:
166     elastic-app: elasticsearch
167   name: elasticsearch-service
168   namespace: platform
169 spec:
170   ports:
171     - port: 9200
172       targetPort: 9200
173   selector:
174     elastic-app: elasticsearch
175   type: NodePort

 

posted @ 2021-01-06 16:02  故约翰  阅读(574)  评论(0)    收藏  举报