搭建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

浙公网安备 33010602011771号