diff --git a/README.md b/README.md index 84b88bc..4650f06 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ |docker|17.03.2-ce, 18.06.1-ce| |network|calico, cilium, flannel, kube-router| --注:集群用到的所有二进制文件已打包好供下载 [https://pan.baidu.com/s/1c4RFaA](https://pan.baidu.com/s/1c4RFaA) +- 注:集群用到的所有二进制文件已打包好供下载 [https://pan.baidu.com/s/1c4RFaA](https://pan.baidu.com/s/1c4RFaA) 请阅读[项目TodoList](docs/mixes/TodoList.md)和[项目分支说明](docs/mixes/branch.md), 欢迎提[Issues](https://github.com/gjmzj/kubeasz/issues)和[PRs](docs/mixes/HowToContribute.md)参与维护项目。 diff --git a/docs/practice/es_cluster.md b/docs/practice/es_cluster.md index 097229d..a4bbdba 100644 --- a/docs/practice/es_cluster.md +++ b/docs/practice/es_cluster.md @@ -2,7 +2,8 @@ `Elasticsearch`是目前全文搜索引擎的首选,它可以快速地储存、搜索和分析海量数据;也可以看成是真正分布式的高效数据库集群;`Elastic`的底层是开源库`Lucene`;封装并提供了`REST API`的操作接口。 -## 单节点 docker 测试安装 +## 单节点 docker 测试安装 + ``` bash cat > es-start.sh << EOF #!/bin/bash @@ -24,17 +25,21 @@ EOF 执行`sh es-start.sh`后,就在本地运行了。 - 验证 docker 镜像运行情况 + ``` bash root@docker-ts:~# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 171f3fecb596 jmgao1983/elasticsearch:6.4.0 "/usr/local/bin/do..." 2 hours ago Up 2 hours 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp es01 ``` + - 验证 es 健康检查 + ``` bash root@docker-ts:~# curl http://127.0.0.1:9200/_cat/health epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent 1535523956 06:25:56 docker-es green 1 1 0 0 0 0 0 0 - 100.0% ``` + ## 在 k8s 上部署 Elasticsearch 集群 在生产环境下,Elasticsearch 集群由不同的角色节点组成: @@ -48,6 +53,7 @@ epoch timestamp cluster status node.total node.data shards pri relo i - 1.安装 helm: 以本项目[安全安装helm](../guide/helm.md)为例 - 2.准备 PV: 以本项目[K8S 集群存储](../setup/08-cluster-storage.md)创建`nfs`动态 PV 为例 - 编辑配置文件:roles/cluster-storage/defaults/main.yml + ``` bash storage: nfs: @@ -57,20 +63,26 @@ storage: storage_class: "nfs-es" provisioner_name: "nfs-provisioner-01" ``` + - 创建 nfs provisioner + ``` bash $ ansible-playbook /etc/ansible/roles/cluster-storage/cluster-storage.yml # 执行成功后验证 $ kubectl get pod --all-namespaces |grep nfs-prov kube-system nfs-provisioner-01-6b7fbbf9d4-bh8lh 1/1 Running 0 1d ``` + - 3.安装 elasticsearch chart + ``` bash $ cd /etc/ansible/manifests/es-cluster # 如果你的helm安装没有启用tls证书,请使用helm命令替换以下的helms命令 $ helms install --name es-cluster --namespace elastic -f es-values.yaml elasticsearch ``` + - 4.验证 es 集群 + ``` bash # 验证k8s上 es集群状态 $ kubectl get pod,svc -n elastic @@ -102,11 +114,13 @@ root@k8s401:/etc/ansible# curl 10.100.97.41:29200/_cat/nodes? 172.31.1.6 18 97 4 0.39 0.29 0.27 mi - es-cluster-elasticsearch-master-2 172.31.3.6 20 97 4 0.11 0.17 0.18 mi * es-cluster-elasticsearch-master-1 ``` + ### es 性能压测 如上已使用 chart 在 k8s上部署了 **7** 节点的 elasticsearch 集群;各位应该十分好奇性能怎么样;官方提供了压测工具[esrally](https://github.com/elastic/rally)可以方便的进行性能压测,这里省略安装和测试过程;压测机上执行: `esrally --track=http_logs --target-hosts="$NODE_IP:29200" --pipeline=benchmark-only --report-file=report.md` 压测过程需要1-2个小时,部分压测结果如下: + ``` bash ------------------------------------------------------ _______ __ _____ @@ -149,11 +163,13 @@ root@k8s401:/etc/ansible# curl 10.100.97.41:29200/_cat/nodes? | All | error rate | default | 0 | % | ... ``` + 从测试结果看:集群的吞吐可以(k8s es-client pod还可以扩展);延迟略高一些(因为使用了nfs共享存储);整体效果不错。 ### 中文分词安装 安装 ik 插件即可,可以自定义已安装ik插件的es docker镜像:创建如下 Dockerfile + ``` bash FROM jmgao1983/elasticsearch:6.4.0 diff --git a/docs/setup/00-planning_and_overall_intro.md b/docs/setup/00-planning_and_overall_intro.md index 8129132..b200ba5 100644 --- a/docs/setup/00-planning_and_overall_intro.md +++ b/docs/setup/00-planning_and_overall_intro.md @@ -2,7 +2,8 @@ 多节点高可用集群部署步骤与[AllinOne部署](quickStart.md)基本一致,增加LB 负载均衡部署步骤。 -**注意:请确保各节点时区设置一致、时间同步。** 如果你的环境没有提供NTP 时间同步,推荐集成安装[chrony](guide/chrony.md)。 +**注意1:请确保各节点时区设置一致、时间同步。** 如果你的环境没有提供NTP 时间同步,推荐集成安装[chrony](../guide/chrony.md)。 +**注意2:如果需要在公有云上创建多主多节点集群,请结合阅读[在公有云上部署 kubeasz](kubeasz_on_public_cloud.md)** ## 高可用集群所需节点配置如下: + 部署节点------x1 : 运行这份 ansible 脚本的节点 @@ -11,15 +12,16 @@ + lb节点--------x2 : 负载均衡节点两个,安装 haproxy+keepalived + node节点------x3 : 真正应用负载的节点,根据需要提升机器配置和增加节点数 -生产环境使用建议一个节点只是一个角色,这里演示环境将节点绑定多个角色。项目预定义了3个例子,请修改后完成适合你的集群规划。 +项目预定义了4个例子,请修改后完成适合你的集群规划,生产环境建议一个节点只是一个角色。 + [单节点](../example/hosts.allinone.example) + [单主多节点](../example/hosts.s-master.example) + [多主多节点](../example/hosts.m-masters.example) ++ [在公有云上部署](../example/hosts.cloud.example) ## 部署步骤 -按照[多主多节点](../example/hosts.m-masters.example)示例的节点配置,准备4台虚机,测试搭建一个多主高可用集群。 +按照[多主多节点](../example/hosts.m-masters.example)示例的节点配置,准备4台虚机,搭建一个多主高可用集群。 ### 1.基础系统配置 diff --git a/docs/setup/quickStart.md b/docs/setup/quickStart.md index ef01719..5580421 100644 --- a/docs/setup/quickStart.md +++ b/docs/setup/quickStart.md @@ -139,9 +139,9 @@ kubectl get svc --all-namespaces # 可以查看所有集群服务状态 ansible-playbook 99.clean.yml ``` -如果出现清理失败,类似报错:`... Device or resource busy: '/var/run/docker/netns/xxxxxxxxxx'`,需要手动umount该目录后重新清理 +如果出现清理失败,类似报错:`... Device or resource busy: '/var/run/docker/netns/xxxxxxxxxx'`,需要手动umount该目录后清理 ``` bash $ umount /var/run/docker/netns/xxxxxxxxxx -$ ansible-playbook /etc/ansible/tools/clean_one_node.yml +$ rm -rf /var/run/docker/netns/xxxxxxxxxx ```