凡铁游戏提供最新游戏下载和手游攻略!

商城微服务项目组件搭建(三)Canal与ELK安装部署

发布时间:2024-09-23浏览:49

各位老铁们好,相信很多人对商城微服务项目组件搭建(三)Canal与ELK安装部署都不是特别的了解,因此呢,今天就来为大家分享下关于商城微服务项目组件搭建(三)Canal与ELK安装部署以及的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2.9 运河安装

2.9.1 开启binlog

对于MySQL,需要先开启Binlog写入功能,并将binlog-format配置为ROW模式。 my.cnf中的配置如下

由于MySQL配置文件没有挂载,所以只能在容器中修改。需要提前在容器中安装vi命令。

docker exec -it mysql /bin/bashcd /etc/mysql/mysql.conf.dvi mysqld.cnf

在文件末尾添加以下配置:

log-bin=mysql-bin # 启用binlog

binlog-format=ROW # 选择ROW模式

server_id=1 # 配置MySQL副本需要定义,不要重复canal的slaveId

注:阿里云RDS MySQL默认开启binlog,且账号默认具有binlog dump权限。不需要权限或二进制日志设置。可以直接跳过这一步。

授权的canal link MySQL账户有作为MySQL Slave的权限。如果您已有账户,可以直接授予:

CREATE USER canal IDENTIFIED BY 'canal';GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;FLUSH PRIVILEGES ;#查看用户mysqluse mysql;数据改变mysqlselect user from user;

重启mysql容器

docker 重启mysql

检查binlog:是否开启

显示“log_bin”等变量;

2.9.2 运河安装

137台服务器

我们使用docker安装方法:

docker run -p 11111:11111 --name canal -d docker.io/canal/canal-server

进入容器

docker exec -it canal /bin/bash

修改核心配置canal-server/conf/canal.properties和canal-server/conf/example/instance.properties。 canal.properties是canal本身的配置,instance.properties是需要同步数据的数据库连接配置。

修改canal.properties配置如下:

canal.ip=后添加以下内容

运河.id=123

Instance.properties修改配置如下:

# 位置信息

canal.instance.master.address=192.168.8.137:3306

另一种配置:

#表正则表达式

#canal.instance.filter.regex=.*\\.*

#监听配置

canal.instance.filter.regex=shop_goods.ad_items

配置完成后,重启canal容器

docker重启运河

2.10 JDK1.8安装

可安装在7台服务器上

下载jdk1.8、https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

cd /usr/local/eclipse2019#将下载的压缩包上传到java目录,并解压tar -zxvf jdk-8u371-linux-x64.tar.gzmv jdk1.8.0_371/java/#配置环境变量vi /etc/profileexport JAVA_HOME=/usr/local/eclipse2019/javaexport JRE_HOME=/usr/local/eclipse2019/java/jreexport CLASSPATH=.$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=$JAVA_HOME/bin:$ JAVA_HOME /jre/bin:$PATH:$HOME/bin

要使环境变量立即生效,执行:source /etc/profile

2.11 ELK安装

单独安装在138服务器上

2.11.1 系统参数配置

修改虚拟机配置,vi /etc/security/limits.conf,添加内容:

* 软诺文件65536

*硬nofile 65536

修改vi /etc/sysctl.conf,添加内容:

vm.max_map_count=655360 #262144

2.11.2 ES安装

1. 创建映射文件

mkdir -p /usr/local/eclipse2019/esmkdir {config,data,plugins,logs}#在config文件夹中创建elasticsearch.yml文件,内容如下:###Content cluster.name: 'elasticsearch'http.cors。 enabled: truehttp.cors.allow-origin: '*'network.host: 0.0.0.0discovery.zen.minimum_master_nodes: 1cluster.name: 集群服务名称http.cors.enabled: 启用跨域http.cors.allow-origin: 允许跨域域名,*代表所有域名network.host:外部访问发现的IP.zen.minimum_master_nodes:最小主节点数###Content#文件授权chmod -R 777 /usr/local/eclipse2019/es/

2.安装容器

docker run --name es -p 9200:9200 -p 9300:9300 -e 'discovery.type=单节点' -e ES_JAVA_OPTS='-Xms512m -Xmx512m' -v /usr/local/eclipse2019/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /usr/local/eclipse2019/es/data:/usr/share/elasticsearch/data -v /usr/local/eclipse2019/es/plugins:/usr/share/elasticsearch/插件-v/usr/local/eclipse2019/es/logs:/usr/share/elasticsearch/logs -d elasticsearch:7.6.2

如果发生异常:最大虚拟内存区域vm.max_map_count [65530] 太低,增加到至少[262144]

解决:

#修改配置sysctl.conf vi /etc/sysctl.conf #最后一行添加以下内容vm.max_map_count=655300 #执行命令sysctl -p

如果发生连接异常:ERROR: [1]引导检查失败。在启动Elasticsearch 之前,您必须解决以下[1] 行中描述的要点。

原因:如果需要集群启动es,或者连接的IP端口受到限制,需要开放设置。

解决方案:修改配置文件:vim /usr/local/eclipse2019/es/config/elasticsearch.yml

网络.host: 0.0.0.0

节点.name: 节点-1

cluster.initial_master_nodes: ['node-1']

安装完成后,重启容器docker restart es,然后访问http://192.168.8.137:9200/。效果如下:

{“名称”:“Ke8Ljah”,“cluster_name”:“elasticsearch”,“cluster_uuid”:“QLeYJtTITxmRP29fbFpgbA”,“版本”:{“编号”:“6.8.12”,“build_flavor”:“默认”, _类型':'docker','build_hash':'7a15d2a','build_date':'2020-08-12T07:27:20.804867Z','build_snapshot': false,'lucene_version':'7.7.3', 'minimum_wire_compatibility_version':'5.6 .0', 'minimum_index_compatibility_version': '5.0.0' }, 'tagline': '你知道,用于搜索'}

2.11.3 IK分词器安装

分词器和es必须版本相同。如果不一致,就会发生崩溃。

分词器下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.6.2

下载elasticsearch-analysis-ik-7.6.2.zip文件并解压,然后将解压后的文件全部复制到/usr/local/eclipse2019/ik目录下,将ik目录复制到elasticsearch的plugins目录下。使用复制以下命令:

docker cp ik es:/usr/share/elasticsearch/plugins/

重新启动es:

docker重新启动

2.11.4 es头安装

安装命令:

docker run -d --name es-head -p 9100:9100 docker.io/mobz/elasticsearch-head:5

安装完成后,访问http://192.168.8.137:9100/,效果如下:

1、进入head安装目录;

docker exec -it es-head /bin/bash

2.cd_site/

3.有两个地方可以编辑vendor.js

第6886行'application/x-www-form-urlencoded,改为:'application/json;charset=UTF-8'

第7574行'application/x-www-form-urlencoded'更改为:'application/json;charset=UTF-8'

2.11.5 Kibana安装

1. 拉取镜像

docker拉kibana:7.6.2

2.创建配置文件目录

mkdir /usr/local/eclipse2019/kibana/conf

并在此目录下创建配置文件kibana.yml

server.name: kibana

服务器.host: '0'

#elasticsearch.hosts: ['http://elasticsearch:9200']

elasticsearch.hosts: ['http://192.168.8.138:9200']

xpack.monitoring.ui.container.elasticsearch.enabled: true

#设置kibana中文显示

i18n.locale: en-CN

3.启动容器

#run Kibana,请注意不要写错误的IP #Docker运行-NAME KIBANA -E ELASTICSEARCH_HOSTS=3http://192.168.8.138:9200 -P 5601:5601 /本地/eclipse2019 /kibana/conf/kibana.yml:/usr/share/kibana/config/kibana.yml --privileged=true kibana:7.6.2

如果不需要外部配置,进入容器修改配置即可。

docker exec -it kibana /bin/sh

vi /usr/share/kibana/config/kibana.yml

封面内容

server.name: kibanaserver.host: '0'#elasticsearch.hosts: [ 'http://elasticsearch:9200' ]elasticsearch.hosts: [ 'http://192.168.8.138:9200' ]xpack.monitoring.ui.container.elasticsearch.enabled333 60 true#设置kibana中文显示i18n.locale: zh- CN

4. 参观

http://192.168.8.138:5601

2.11.6 Logstash安装

1. 拉取镜像

docker拉logstash:7.6.2

2.创建配置文件目录

mkdir -p /usr/local/eclipse2019/logstash/pipeline

mkdir -p /usr/local/eclipse2019/logstash/config

在config目录下创建logstash.yml文件和pipelines.yml

logstash.yml内容如下:

config: reload:automatic:trueinterval:3sxpack:management.enabled: falsemonitoring.enabled: falsepath.config:/usr/share/logstash/pipeline

pipelines.yml内容如下:

- pipeline.id:logstash_dev路径.config:/usr/share/logstash/pipeline/logstash_dev.conf

在管道目录中创建配置文件logstash_dev.conf

输入{ tcp { 模式='服务器' 主机='0.0.0.0' 端口=4560 编解码器=json_lines }}过滤器{ if [type]=='记录' { mutate { remove_field='端口'remove_field='主机'remove_field='@version' } json { source='message' remove_field=['message'] } }}输出{ elasticsearch { 主机='192.168.8.138:9200' 索引='log-%{+YYYY.MM.dd}' }}

3.启动容器

docker run -itd --restart=always -p 4560:4560 -p 5044:5044 -d --namelogstash -v /usr/local/eclipse2019/logstash/pipeline/:/usr/share/logstash/pipeline/-v /usr/local /eclipse2019/logstash/config/:/usr/share/logstash/config/--privileged=truelogstash:7.6.2

2.11.7 定期删除索引

如果运行时间较长,磁盘可能已满,无法写入ES,所以要定期删除不太重要的索引数据;如下所示,这可以通过预定脚本来实现。

我们先写一个删除15天前索引的脚本es-index-clear.sh,如下:

# /bin/bash# es-index-clear# 只保留15天内的日志索引LAST_DATA=`date -d '-15 days' '+%Y.%m.%d'`# 删除索引curl -XDELETE 'http://192.168 .8.138:9200/log-'${LAST_DATA}'*'

然后使用crontab添加计划任务。首先执行crontab -e,然后添加以下内容:

0 1 * * * /usr/local/eclipse2019/autobin/es-index-clear.sh

这个调度会在每天凌晨1点执行,然后你可以将其更改为你自己的脚本所在的绝对路径。

可以执行tail -f /var/log/cron来查看定时任务的日志。

2.11.8 ES集群部署

生产环境还是需要部署集群。集群部署请参考以下内容。

1. 概念

Node节点:master、data、client。默认情况下,ES集群节点为混合节点,即elasticsearch.yml中默认node.master: true和node.data: true

主节点数量至少为3个,否则当主节点宕机时,可能无法选举主节点。 shard分片数量:与数据数据节点数量成正比,但不应超过数据节点数量。索引一旦创建,分片值就无法更改。

副本数:值越大,查找效率越高,但写入性能越低(一次数据写入操作需要进行(1+副本)次)。具体值与集群中数据节点数量有关,不应超过[数据节点数量-1]

master - 主节点:主节点数量至少为3个。主要功能:维护元数据、管理集群节点状态;不负责数据写入和查询。配置要点:内存可以比较小,但机器一定要稳定,最好是独享机器。 elasticsearch.yml配置如下: node.master: true node.data: false

data-数据节点:主要功能:负责数据的写入和查询,压力大。配置要点:内存大,最好是独享机。 elasticsearch.yml配置如下: node.master: false node.data: true

client - 客户端节点:主要功能:负责任务分发和结果聚合,分担数据节点的压力。配置要点:内存大,最好是独享机。 elasticsearch.yml配置如下: node.master: false

mix- 混合节点:既是主节点又是数据节点。当服务器数量不足时,只能考虑这种节点配置。 elasticsearch.yml配置如下: node.master: true node.data: true

2. 部署

服务器IP:192.168.8.74 192.168.8.75 192.168.8.76

3. 配置

cd /usr/local/eclipse2019

MKDIRES

光盘es/

触摸elasticsearch.yml

vi elasticsearch.yml

手动新建elasticsearch.yml配置文件,方便docker文件处理

#集群名称所有节点名称一致cluster.name: es-clusters#节点当前名称,每个节点不能重复es-node-1, es-node-2, es-node-3node.name: es-node- 1# 该节点当前是否有资格为主节点运行node.master: true #该节点当前是否存储数据node.data: true #设置为公开访问network.host: 0.0.0.0 #为其他节点设置本机IP地址与该节点交互,三个站分别为network.publish_host: 192.168.8.74#设置映射端口http.port: 9200#内部节点间通信端口transport.tcp.port: 9300#支持跨域访问http.cors.enabled: truehttp.cors.allow-origin: ' *'#配置集群discovery的主机地址.seed_hosts: ['192.168.8.74', '192.168.8.75', '192.168.8.76'] #初始master节点,使用初始集合满足master条件的节点启动集群cluster.initial_master_nodes: ['es-node-1', 'es-node-2', 'es-node-3']#节点等待响应的时间。默认值为30 秒。增大这个值会在一定程度上减少误判。造成脑裂discovery.zen.ping_timeout: 30s#配置集群最小主节点数,通常为(可以成为主节点的主机数/2)+1discovery.zen.minimum_master_nodes: 2#配置最小正常工作节点数集群中#gateway.recover_after_nodes: 2 #禁用交换内存以提高效率bootstrap.memory_lock: true

root用户修改/etc/security/limits.conf并添加以下内容以增加在线进程和资源使用限制。

* 软诺文件65536

*硬nofile 65536

*软nproc 32000

*硬nproc 32000

*硬内存锁无限

*软内存锁无限

执行命令使其生效

源/etc/profile

修改/etc/systemd/system.conf并添加以下内容

默认限制NOFILE=65536

默认限制NPROC=32000

DefaultLimitMEMLOCK=无穷大

重启服务器,或者执行以下两条命令使配置生效。

systemctl 守护进程重新加载

systemctl 守护进程重新执行

修改虚拟内存最大映射数。系统虚拟内存默认最大映射数为65530,无法满足ES系统的要求,需要调整为262144以上。 sudo vi /etc/sysctl.conf

#添加参数

vm.max_map_count=262144

重新加载/etc/sysctl.conf 配置

系统控制-p

4. 拉取镜像

#elasticSearchmirror

docker拉elasticsearch:7.6.2

#elasticSearch-头镜

docker pull mobz/elasticsearch-head:5-alpine

5.启动ElasticSearch

注意:我们的启动参数设置-Xms2g -Xmx2g是根据实际服务器内存进行调整的。

docker运行-d -p 9200:9200 -p 9300:9300 \

-e 'ES_JAVA_OPTS=-Xms2g -Xmx2g' \

-v /usr/local/eclipse2019/es/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \

--名称elasticsearch \

--重新启动=始终\

弹性搜索:7.6.2

如果启动时报错:ERROR: bootstrap Checks failed memorylocking requests for elasticsearch process 但内存未锁定,请重启服务器。

6.启动es-head

与2.11.4相同

用户评论

陌颜幽梦

终于到 Canal 和 ELK 的安装部署了!这篇文章讲解非常详细,图文并茂,新手很容易理解。感觉这篇文对这个项目真的很有帮助!

    有16位网友表示赞同!

作业是老师的私生子

我正在搭建类似的商城微服务项目,看着文章进度条越来越快,心里也激动啊!Canal 和 ELK 都是很重要的组件,这次学习到这些知识,能让我把项目推进更快一步.

    有9位网友表示赞同!

|赤;焰﹏゛

说句实话,一直对 Canal 和 ELK 的功能不太了解。看这篇文章才知道他们的作用这么关键!感谢作者分享这篇干货满满的文章,对我来说太实用啦!

    有16位网友表示赞同!

寻鱼水之欢

感觉Canal和ELK配置起来比较复杂,这篇文章写的很详细,不过我还是有些地方没理解透彻。希望作者能出一些更深入的解析,比如遇到常见问题的解决方案.

    有18位网友表示赞同!

眉黛如画

我之前也做过类似的项目,对 Canal 和 ELK 的使用有一定的经验。 这篇文章从多个角度讲解了它们的安装部署, 很有参考价值 ,特别是对于新人来说,可以快速上手!

    有5位网友表示赞同!

优雅的叶子

最近在学习微服务架构,刚好遇见这篇文章!太棒了!Canal 和 ELK 是必学项目, 作者的讲解非常清晰易懂, 能让我更容易理解这些概念。

    有9位网友表示赞同!

生命一旅程

商城微服务的组件搭建确实需要很多细节处理,希望作者下次能分享更多的实战经验,比如如何进行性能调优和故障排查,这对我来说更有帮助!

    有16位网友表示赞同!

滴在键盘上的泪

安装Canal和ELK的过程确实比较繁琐。我按照文章步骤操作了一遍,还是遇到了些问题, 幸好文章配图清晰,最终还是成功了, 感谢作者的分享!

    有17位网友表示赞同!

醉婉笙歌

感觉这篇博客写的不错,信息量很足, Canal 和 ELK 的介绍都非常深入。希望以后能了解更多关于微服务项目的实战案例, 这样更能帮助我实际落地项目。

    有7位网友表示赞同!

南初

Canal和ELK都是非常棒的工具,文章讲解的很详细,图文结合, 让我对这两者有了更加深刻的理解。期待作者后续分享更多关于容器、网络等相关知识!

    有11位网友表示赞同!

高冷低能儿

我觉得这篇文章的写作风格比较官方, 缺少一些亲切感, 希望作者能用更加通俗易懂的语言来讲解技术要点,这样更能够吸引读者,特别是对技术不太熟悉的人。

    有14位网友表示赞同!

灵魂摆渡人

Canal 和 ELK 的配置确实需要一定的技术基础, 希望这篇博客能添加一些针对不同水平用户的指导,以便新手也能更容易上手!

    有16位网友表示赞同!

青衫故人

文章很棒,帮助我理解了 Canal 和 ELK 它们的作用和安装部署方法。希望能看到更多关于微服务架构的实战案例分析!

    有7位网友表示赞同!

冷青裳

Canal 和 ELK 就好像微服务的守护神, 保证系统的稳定运行。希望更多的开发者能够关注这些关键组件, 做好相应的学习和实践!

    有15位网友表示赞同!

看我发功喷飞你

我个人比较喜欢作者直白的写作风格, 清晰地把技术知识点传达给读者。希望作者能继续分享更多干货满满的博客文章!

    有6位网友表示赞同!

打个酱油卖个萌

这篇文章解决了我的一个问题:如何安装部署Canal 和 ELK?文章讲解非常详细,操作步骤清晰易懂。很感谢作者的贡献!

    有17位网友表示赞同!

冷嘲热讽i

我觉得文章中关于 Canal 和 ELK 的应用场景介绍比较少, 希望能增加更多具体的案例分析,让读者能够更好地理解它们的现实意义!

    有15位网友表示赞同!

热点资讯