Implantação do docker Elasticsearch 5.6.5

Crie o hábito de escrever juntos! Este é o 8º dia da minha participação no "Nuggets Daily New Plan · April Update Challenge", clique para ver os detalhes do evento .

Modificar a configuração do sistema

  1. Modifique a configuração do limit.conf: /etc/security/limits.conf
   新增或修改成
    soft nofile 65536 # 大于等于65536
    hard nofile 65536 # 大于等于65536
    soft nproc 2048 # 大于等于2048
    hard nproc 4096 # 大于等于4096
    soft memlock unlimited
    hard memlock unlimited
复制代码
复制代码
  1. Modifique a configuração do sysctl.conf: /etc/sysctl.conf
   ## 新增或修改成,运行sysctl -p 生效
   vm.max_map_count=262144 # 大于等于262144
复制代码
复制代码
  1. Modifique a configuração do 90-nproc.conf: /etc/security/limits.d/90-nproc.conf
   ## 新增或修改成
   * soft nproc 2048 # 大于等于2048
复制代码
复制代码

Executar Elasticsearch

Puxe a imagem:docker pull elasticsearch:5.6.5

Execute o comando de inicialização:

docker run --name=es-1 --net=host --restart on-failure:10 --log-opt max-size=128m --ulimit nofile=65536:65536 --ulimit nproc=4096:4096 --ulimit memlock=-1:-1 -m 9000m \
        -v "$PWD/elasticsearch/esdata":/usr/share/elasticsearch/data \
        -v "$PWD/elasticsearch/logs":/usr/share/elasticsearch/logs \
        -e ES_JAVA_OPTS="-Xms4000m -Xmx4000m -Xss16m" \
        -d elasticsearch:5.6.5 \
        -Ediscovery.zen.minimum_master_nodes=1 \
        -Ediscovery.zen.ping.unicast.hosts=ip:9300,ip:9300 \
        -Ecluster.name=es-log \ ## 集群的名称
        -Enetwork.host=内网IP
复制代码
复制代码

Nota: Ao iniciar aqui, a memória que pode ser usada pelo contêiner docker é limitada a 800m, o tamanho do heap jvm, o número mínimo de nós mestres no cluster, o IP do nó do cluster e o nome do cluster. devem ser ajustados de acordo com a situação real e são muito críticos.

Nome do nó, nenhuma configuração adicional é necessária, o padrão é o nome da máquina do host atual

Verificar cluster do Elasticsearch

  1. Execute o seguinte comando em qualquer servidor de cluster para curl 内网IP:9200/_cat/nodes?vretornar as informações de todos os nós do cluster atual, indicando que o cluster foi construído
   ip        heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
   ip1           32          93   1    0.66    0.48     0.45 mdi       *      node2
   ip2           68          92   3    0.72    0.65     0.61 mdi       -      node1
   ip3           35          92   1    0.77    0.72     0.53 mdi       -      node3
复制代码
复制代码
  1. Verifique o status de integridade do cluster curl -XGET 内网IP:9200/_cluster/health?prettyretorna informações de chave semelhantes
   {
     "cluster_name" : "es-log",
     "status" : "green",
     "timed_out" : false,
     "number_of_nodes" : 3,
     "number_of_data_nodes" : 3,
     "active_primary_shards" : 10,
     "active_shards" : 20,
     "relocating_shards" : 0,
     "initializing_shards" : 0,
     "unassigned_shards" : 0,
     "delayed_unassigned_shards" : 0,
     "number_of_pending_tasks" : 0,
     "number_of_in_flight_fetch" : 0,
     "task_max_waiting_in_queue_millis" : 0,
     "active_shards_percent_as_number" : 100.0
   }
复制代码
复制代码

A informação de resposta mais importante é o campo de status. O status pode ser um dos três valores:

  • verde Todos os shards primários e de réplica são alocados. Seu cluster está 100% disponível.
  • amarelo Todos os estilhaços primários são estilhaçados, mas pelo menos uma réplica está ausente. Nenhum dado é perdido, portanto, os resultados da pesquisa ainda estão intactos. No entanto, sua alta disponibilidade está um pouco enfraquecida. Se mais fragmentos desaparecerem, você perderá dados. Pense no amarelo como um aviso que precisa ser investigado imediatamente.
  • vermelho Pelo menos um estilhaço primário (e todas as suas réplicas) está ausente. Isso significa que estão faltando dados: as pesquisas só podem retornar dados parciais e as solicitações de gravação alocadas para esse fragmento retornarão uma exceção.

Modelo de criação de cluster

Depois que o cluster for iniciado com êxito, execute o comando a seguir em qualquer nó do Elasticsearch para criar um modelo.

curl -XPUT '内网IP:9200/_template/test_template' -H 'Content-Type: application/json' -d'
{
	"template": "ctu-*",
	"settings": {
		"index": {
			"refresh_interval": "120s",
			"number_of_shards": "5",
			"max_result_window": "50000",
			"number_of_replicas": "1"
		}
	},
	"mappings": {
		"engineLog": {
			"dynamic_templates": [{
				"strings": {
					"match_mapping_type": "string",
					"mapping": {
						"type": "keyword"
					}
				}
			}]
		}
	},
	"aliases": {
		"es-log": {}
	}
}
'

复制代码
复制代码

No modelo, max_result_windowrepresenta o maior item que pode ser retornado quando es consulta. Ao configurar, deve-se observar que a situação real da memória não deve ser muito grande
. Verifique as informações de configuração de um índice e executecurl ip:9200/indexName/_settings?pretty


possíveis problemas

  1. Após modificar o parâmetro limit.conf, você pode passar na ulimit -averificação, caso não surta efeito, abrir uma nova janela de sessão ou reiniciar o sshdserviço ( service sshd restart)
  2. Depois de modificar limit.conf e entrar em vigor, iniciar o contêiner elasticsearch ainda falha, o log do contêiner mostra max file descriptors[4096] for elasticsearch process is to low , increase to at least[65536], tente reiniciar o serviço docker
  3. Se os dois métodos acima não funcionarem, você pode tentar adicionar parâmetros ao iniciar o contêiner elasticsearch--ulimit nofile=65536:65536 --ulimit nproc=2048:4096 --ulimit memlock=unlimited:unlimited

Acho que você gosta

Origin juejin.im/post/7084964583013613581
Recomendado
Clasificación