容器化 部署es集群

公司手头上有千万级数据,起先用单机版es去入库这些数据,写到100多W,总是各种崩,分片时效,主分片丢失,status都是yellow->red。。。。  后面排查了大量的log后发现,还是因为单机版es的分片,以及副本机制在分片错误时候,没能恢复数据,导致整个节点损坏。。。。没办法,直接找了几台机器来,直接上分布式。。。。

        1、避免在不同机器上,环境不同导致后面各种灵异事件,直接用docker容器化技术,[具体安装参考其他教学]。

           拉取es 镜像  : 

            docker pull elasticsearch:7.6.0

          创建docker对应的路径目录

            mkdir -p /usr/local/docker/elasticsearch/config

            mkdir -p /usr/local/docker/elasticsearch/data

            mkdir -p /usr/local/docker/elasticsearch/plugins

          docker可读取es配置文件 

            echo "http.host: 0.0.0.0">>/usr/local/docker/elasticsearch/config/elasticsearch.yml

        这条命令要运行下,无权限访问很 坑~~~

             chmod -R 777 /usr/local/docker/elasticsearch/

2、命令执行完之后开始配置es的配置文件

#es集群名
cluster.name: my-es
#节点名称,不同节点不同名
node.name: node-1
node.master: true
#是否存储数据
node.data: true
#你有几台机器就配置几台数量
node.max_local_storage_nodes: 3
#给当前节点自定义属性(可以省略)
#node.attr.rack: r1
#数据存档位置
path.data: /usr/share/elasticsearch/data
#日志存放位置
path.logs: /usr/share/elasticsearch/log
#默认true 
#bootstrap.memory_lock: true

#为避免麻烦直接0.0.0.0
network.bind_host: 0.0.0.0
#当前节点ip
network.publish_host: 你的ip
#设置映射端口
http.port: 9200
#内部节点之间沟通端口
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"

# node写你机器的ip或者节点名都行
discovery.seed_hosts: ["node-1:9300","node-2:9300","node-3:9300"]

#没有zookeeper,所以主节点都是随机选举的
cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
#在群集完全重新启动后阻止初始恢复,直到启动N个节点
#z这个数量一般是总机器数量-1,我3台所以是2 
gateway.recover_after_nodes: 2
#删除索引是是否需要显示其名称,默认为显示
#action.destructive_requires_name: true

    到这里没有运行条命令会有个小细节的错误  

    error :max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144】

解决方法       

     #  文件最后添加一行


        vm.max_map_count=262144

      刷新系统配置

       sysctl -p /etc/sysctl.conf/

 3、最后运行docker启动命令

       docker run -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d -p 9200:9200 -p 9300:9300 -v /usr/local/docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /usr/local/docker/elasticsearch/data:/usr/share/elasticsearch/data -v /usr/local/docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins --name elasticsearch elasticsearch:7.6.0

查看下docker镜像, 很nice

[root@iZqma4tjnp9e66Z plugins]# docker ps -a
CONTAINER ID   IMAGE                 COMMAND                  CREATED       STATUS             PORTS                                            NAMES
61b84e1aa263   elasticsearch:7.6.0   "/usr/local/bin/dock…"   2 hours ago   Up About an hour   0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp   elasticsearch

三台机器重复三次  百分百高可用、 status:green ,搞定收工下班

{
  "cluster_name" : "my-es",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 3,
  "number_of_data_nodes" : 3,
  "active_primary_shards" : 6,
  "active_shards" : 12,
  "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
}

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kubernetes是一个开源的容器编排平台,可以帮助我们轻松部署、扩展和管理容器应用程序。Elasticsearch是一个分布式的实时搜索和分析引擎,可以帮助我们处理大量的数据。 要在Kubernetes上持久部署Elasticsearch8.x集群,我们可以按照以下步骤进行操作: 1. 创建Kubernetes集群:首先,我们需要在Kubernetes上创建一个集群。可以选择在本地搭建Minikube环境,或者使用云服务提供商如AWS、Azure等提供的Kubernetes集群。 2. 创建Persisten Volume(PV)和Persisten Volume Claim(PVC):PV是Kubernetes中的一种资源,用于表示集群中的持久存储。PVC则是对PV的申请,用于声明需要的存储资源。我们需要创建足够的PV和PVC来提供给Elasticsearch使用。 3. 创建Elasticsearch Pod和Service:创建一个包含Elasticsearch容器的Pod,并且将其暴露为一个Service。可以使用Kubernetes的Deployment资源来定义Elasticsearch的Pod模板,以便实现自动扩展和故障恢复。 4. 配置Elasticsearch集群:在Elasticsearch的配置文件中,我们需要为每个节点配置唯一的节点名称、集群名称和网络绑定地址。此外,还需要指定master节点和data节点的角色和数量,并配置持久存储路径。 5. 使用StatefulSet进行扩容:Elasticsearch是一个分布式系统,可以通过添加更多的节点来扩展其容量。为了实现有状态应用的扩容,可以使用Kubernetes的StatefulSet资源,它可以为每个节点提供唯一的网络标识和稳定的存储卷。 6. 监控和日志管理:为了保证Elasticsearch集群的稳定性和可用性,可以使用Kubernetes提供的监控和日志管理工具。比如,Prometheus可以帮助我们监控集群的健康状态,Elasticsearch官方提供的Elasticsearch Logstash Kibana(ELK)可以用于集中存储和分析日志。 通过以上步骤,我们就可以在Kubernetes上成功持久部署Elasticsearch8.x集群。这样可以有效地管理和扩展我们的分布式搜索和分析引擎,并且确保数据的持久性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值