基于Spring Cloud 和 Spring Cloud Alibaba 构建微服务架构,想要总体稳定运行,提高易用性和管控性。所须要集成和整合的内容就很是多,例如:Nacos、ELK等等。git
特殊状况下,须要本身在本机搭建环境,而且运行,其复杂度可想而知。为了下降复杂度,在本身电脑上,经过安装Docker Desktop,并采用WSL 2的方式,运行相关组件的Docker Container。github
如何安装使用,请看个人文章:docker
(1) Windows 10 2004 (20H1) 安装 Docker Desktop for Windows (2.3.0.2) 以 WSL 2 方式运行容器
(2) Windows 10 将 Docker Desktop for Windows(WSL 2 方式)文件存储移出C盘放置到其它目录bootstrap
微服务架构,离不开日志中心,常规的日志中心,均采用ELK来进行数据的存储、查询和展示。为了图方便,直接PULL sebp/elk(ELK的集成镜像)来运行ELK环境。vim
在Window 10 的 WSL 2 环境中运行sebp/elk,在控制台中会出现如下错误:架构
waiting for Elasticsearch to be up (1/30) waiting for Elasticsearch to be up (2/30) waiting for Elasticsearch to be up (3/30) waiting for Elasticsearch to be up (4/30) waiting for Elasticsearch to be up (5/30) waiting for Elasticsearch to be up (6/30) waiting for Elasticsearch to be up (7/30) waiting for Elasticsearch to be up (8/30) waiting for Elasticsearch to be up (9/30) waiting for Elasticsearch to be up (10/30) waiting for Elasticsearch to be up (11/30) waiting for Elasticsearch to be up (12/30) waiting for Elasticsearch to be up (13/30) waiting for Elasticsearch to be up (14/30) waiting for Elasticsearch to be up (15/30) waiting for Elasticsearch to be up (16/30) waiting for Elasticsearch to be up (17/30) wating for Elasticsearch to be up (18/30) waiting for Elasticsearch to be up (19/30) waiting for Elasticsearch to be up (20/30) waiting for Elasticsearch to be up (21/30) waiting for Elasticsearch to be up (22/30) ERROR: [1] bootstrap checks failed [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] ERROR: Elasticsearch did not exit normally - check the logs at /var/log/elasticsearch/elasticsearch.log waiting for Elasticsearch to be up (23/30) waiting for Elasticsearch to be up (24/30) waiting for Elasticsearch to be up (25/30) waiting for Elasticsearch to be up (26/30) waiting for Elasticsearch to be up (27/30) waiting for Elasticsearch to be up (28/30) waiting for Elasticsearch to be up (29/30) waiting for Elasticsearch to be up (30/30) Couldn't start Elasticsearch. Exiting.
错误堆栈中会出现如下关键信息:elasticsearch
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
主要问题就是:Linux Distro Virtual Memory Areas 默认的vm.max_map_count值是65530,过小不足以支撑ELK的运行。须要将该值增大到至少262144。微服务
进入到你所使用的WSL 2 distro中(本人使用的是Ubuntu 20)操作系统
~$ sudo -i
~$ vim /etc/sysctl.conf (须要是root帐户) ~$ vm.max_map_count=262144 (文件最后添加一行)
~$ sysctl -p (重启生效)
该方法有一个问题,一旦系统重启或者Docker Desktop重启。就须要从新手动执行以上命令,比较麻烦。
wsl -d docker-desktop echo 262144 >> /proc/sys/vm/max_map_count
经过这个方法,即便操做系统重启,参数仍然有效。对于Linux只停留在使用阶段,若是有更好的方式也请告诉我。.net