Elasticsearch+Kibana集群部署【Ansible自动化】

Ansible部署Roles.tasks文件【请根据实际情况修改完善】:

基础优化tasks:
- name: 修改配置文件 limits.conf
  lineinfile:
    dest: '/etc/security/limits.conf'
    line: '*       {{ item.value }}'
    regexp: '.*{{ item.value }}.*'
    state: present
  with_items:
    - { value: 'soft     nofile         65536' }
    - { value: 'hard     nofile         65536' }
    - { value: 'soft     nproc          2048' }
    - { value: 'hard     nproc          4096' }

- name: 修改配置文件 sysctl.conf
  lineinfile:
    dest: '/etc/sysctl.conf'
    line: '{{ item.value }}'
    regexp: '^{{ item.value }}.*'
    state: present
  with_items:
    - { value: 'vm.max_map_count = 655360' }
    - { value: 'vm.swappiness = 1' }

- name: 让内核参数立即生效
  shell: 'sysctl -p'
  ignore_errors: yes
Elasticsearch部署tasks:
- name: Installed OpenJDK-1.8.0
  yum: 
    name: java-1.8.0-openjdk
    state: present

- name: Installed Java-devel
  yum: 
    name: java-devel
    state: present

- name: Installed Elasticsearch
  yum: 
    name: https://mirrors.huaweicloud.com/elasticsearch/7.8.0/elasticsearch-7.8.0-x86_64.rpm
    state: present
  
- name: Configure Elasticsearch Server
  lineinfile:
    dest: '/etc/elasticsearch/elasticsearch.yml'
    line: '{{ item.key }}: {{ item.value }}'
    regexp: '^{{ item.key }}.*'
    state: present
  with_items:
    - { key: "cluster.name", value: "{{ cluster_name }}" }
    - { key: "node.name", value: "{{ inventory_hostname }}" }
    - { key: "network.host", value: "{{ inventory_hostname }}" }
    - { key: "http.port", value: "9200" }
    - { key: "http.cors.enabled", value: "true" }
    - { key: "http.cors.allow-origin", value: "'*'" }
    - { key: "discovery.seed_hosts", value: "['192.168.169.88', '192.168.169.90']" }
    - { key: "cluster.initial_master_nodes", value: "['192.168.169.88', '192.168.169.90']" }
    - { key: "discovery.zen.minimum_master_nodes", value: "1" }
    - { key: "indices.memory.index_buffer_size", value: "20%" }
    - { key: "indices.query.bool.max_clause_count", value: "100000000" }
    - { key: "path.data", value: "/home/elasticsearch/data" }
    - { key: "path.logs", value: "/home/elasticsearch/logs" }
  
- name: Configure jvm.options
  lineinfile:
    dest: '/etc/elasticsearch/jvm.options'
    regexp: "{{ item.old }}"
    line: "{{ item.new }}"
  with_items:
    - {old: '-Xms',new: '-Xms1g' }
    - {old: '-Xmx',new: '-Xmx1g' }
    #Elasticsearch要求Xms和Xmx大小需要一致
    
- name: Chown /etc/elasticsearch/
  file: path=/etc/elasticsearch owner=elasticsearch group=elasticsearch
  
- name: Chown /usr/share/elasticsearch/
  file: path=/usr/share/elasticsearch/ owner=elasticsearch group=elasticsearch

- name: Mkdir /home/elasticsearch/
  file: path=/home/elasticsearch state=directory
  
- name: Chown /home/elasticsearch/
  file: path=/home/elasticsearch owner=elasticsearch group=elasticsearch
  
- name: Start Elasticsearch Server
  systemd: name=elasticsearch state=started enabled=yes
Kibana部署tasks:
- name: Installed Kibana
  yum: 
    name: https://mirrors.huaweicloud.com/kibana/7.8.0/kibana-7.8.0-x86_64.rpm
    state: present
  
- name: Configure Kibana Server
  lineinfile:
    path: /etc/kibana/kibana.yml
    regexp: "{{ item.old }}"
    line: "{{ item.new }}"
  with_items:
    - {old: 'server.port',new: ' server.port: 5601' }
    - {old: 'server.host',new: ' server.host: "0.0.0.0"' }
    - {old: 'elasticsearch.hosts',new: ' elasticsearch.hosts: ["http://{{ inventory_hostname }}:9200"]' }
    - {old: 'kibana.index',new: ' kibana.index: ".kibana"' }
    - {old: 'kibana.defaultAppId',new: ' kibana.defaultAppId: "discover"' }
    - {old: 'elasticsearch.pingTimeout',new: ' elasticsearch.pingTimeout: 1500' }
    - {old: 'elasticsearch.requestTimeout',new: ' elasticsearch.requestTimeout: 30000' }
    - {old: 'elasticsearch.startupTimeout',new: ' elasticsearch.startupTimeout: 5000' }
    - {old: 'i18n.locale',new: ' i18n.locale: "zh-CN"' }
    
- name: Start Kibana Server
  systemd: name=kibana state=started enabled=yes


手动部署教程:

服务器基础优化:

vim /etc/security/limits.conf

soft nofile 65536
hard nofile 65536
soft nproc 2048
hard nproc 4096

vim /etc/sysctl.conf

vm.max_map_count = 655360
vm.swappiness = 1

sysctl -p

安装JDK环境

yum install -y java-1.8.0-openjdk
## 还可以使用Oracle JDK
#https://www.oracle.com/java/technologies/javase-jdk11-downloads.html

Elasticsearch安装部署

yum install -y https://mirrors.huaweicloud.com/elasticsearch/7.8.0/elasticsearch-7.8.0-x86_64.rpm

直接使用RPM包安装省事,华为云镜像站国内访问快。

配置Elasticsearch
vim /etc/elasticsearch/elasticsearch.yml

cluster.name: elasticsearch #设置集群名字
index.number_of_shards: 3 #设置es索引分片数量,分布式存储,提高查询效率等
index.number_of_replicas: 1 #设置分片副本数量,提供数据高可用
node.name: 192.168.168.7 #设置本节点名字
path.data: /data/es_data #设置es索引数据存放位置
network.host: 192.168.168.7 #设置此节点绑定IP
discovery.zen.ping.unicast.hosts: ["192.168.168.7", "192.168.168.8", "192.168.168.9"] #设置集群节点成员

配置jvm.options
vim /etc/elasticsearch/jvm.options
Elasticsearch要求Xms和Xmx大小需要一致
目录授权
chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/
chown -R elasticsearch:elasticsearch /etc/elasticsearch/
启动Elasticsearch
systemctl enable elasticsearch && systemctl start elasticsearch

可以网页访问http://IP地址:9200/查看是否启动成功

部署Kibana,并配置

#安装Kibana
yum install -y https://mirrors.huaweicloud.com/kibana/7.8.0/kibana-7.8.0-x86_64.rpm
#配置Kibana
vim /etc/kibana/kibana.yml

server.port: 5601'
server.host: "0.0.0.0"'
elasticsearch.hosts: ["http://192.168.169.88:9200"]'
i18n.locale: "zh-CN"'

#启动Kibana
systemctl enable kibana && systemctl start kibana

稍等几分钟,网页访问http://IP地址:5601/查看是否启动成功

你可能感兴趣的:(Elasticsearch+Kibana集群部署【Ansible自动化】)