RabbitMQ、Redis和ElasticSearch的安装部署1.前言在上一篇中我们完成了 Linux 入门阶段最重要的一步——软件部署实战。从 MySQL 数据库的安装配置到 Tomcat 服务端的部署运行再到 Nginx 反向代理的搭建使用我们一起走完了从会敲 Linux 命令到能搭建真实服务的全过程。如果你已经跟着上一篇一步步操作下来那么你的 Linux 环境里现在应该已经跑起了三个核心服务一个负责存储数据的 MySQL、一个负责运行 Java 应用的 Tomcat、一个负责流量分发和静态资源加速的 Nginx。可以说你手头已经有了一套 Web 应用上线所需的基础设施雏形。2. RabbitMQ安装部署部署了三个核心中间件RabbitMQ消息队列通过生产者-消费者模型实现系统解耦需配置yum源安装并启用管理插件Redis高性能缓存通过EPEL源安装默认端口6379Elasticsearch全文搜索引擎需配置集群信息API端口9200。三者均通过systemctl管理开放对应端口即可使用形成完整中间件栈。2.1 简介简单说RabbitMQ是一个消息中转站。支付系统只需要把订单已支付这个消息丢给RabbitMQ就可以立刻告诉你支付成功然后转身去干别的了。至于扣库存、发短信、通知卖家这些事都由RabbitMQ在背后慢慢分发出去各自的服务收到消息后再去执行。场景没有 RabbitMQ有了 RabbitMQ系统解耦支付成功要同时通知积分、短信、物流系统改一个就要改支付代码支付成功只管发消息谁需要谁自己来拿流量削峰秒杀瞬间百万请求涌入数据库直接崩请求全丢进队列后端慢慢处理系统稳如泰山异步提速发短信耗时3秒用户等着发短信丢进队列秒返回用户丝滑体验核心概念生产者→ 发消息的人比如订单系统交换机→ 分拣员决定消息往哪送队列→ 快递柜暂存消息等着被取消费者→ 取消息的人比如库存系统RabbitMQ 让不同的系统之间通过消息说话不用互相等着也不用互相依赖大家都轻松。2.2 安装1. 准备yum仓库# root执行 # 1. 准备gpgkey密钥 rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc rpm --import https://packagecloud.io/rabbitmq/erlang/gpgkey rpm --import https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey# 2. 准备仓库文件 vim /etc/yum.repos.d/rabbitmq.repo# 填入如下内容 ## ## Zero dependency Erlang ## [rabbitmq_erlang] namerabbitmq_erlang baseurlhttps://packagecloud.io/rabbitmq/erlang/el/7/$basearch repo_gpgcheck1 gpgcheck1 enabled1 # PackageClouds repository key and RabbitMQ package signing key gpgkeyhttps://packagecloud.io/rabbitmq/erlang/gpgkey https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc sslverify1 sslcacert/etc/pki/tls/certs/ca-bundle.crt metadata_expire300 [rabbitmq_erlang-source] namerabbitmq_erlang-source baseurlhttps://packagecloud.io/rabbitmq/erlang/el/7/SRPMS repo_gpgcheck1 gpgcheck0 enabled1 # PackageClouds repository key and RabbitMQ package signing key gpgkeyhttps://packagecloud.io/rabbitmq/erlang/gpgkey https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc sslverify1 sslcacert/etc/pki/tls/certs/ca-bundle.crt metadata_expire300 ## ## RabbitMQ server ## [rabbitmq_server] namerabbitmq_server baseurlhttps://packagecloud.io/rabbitmq/rabbitmq-server/el/7/$basearch repo_gpgcheck1 gpgcheck0 enabled1 # PackageClouds repository key and RabbitMQ package signing key gpgkeyhttps://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc sslverify1 sslcacert/etc/pki/tls/certs/ca-bundle.crt metadata_expire300 [rabbitmq_server-source] namerabbitmq_server-source baseurlhttps://packagecloud.io/rabbitmq/rabbitmq-server/el/7/SRPMS repo_gpgcheck1 gpgcheck0 enabled1 gpgkeyhttps://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey sslverify1 sslcacert/etc/pki/tls/certs/ca-bundle.crt metadata_expire3002. 安装RabbitMQrabbitmq语言用erlang开发的# root执行 yum install erlang rabbitmq-server -y安装完成3. 启动# root执行 # 使用systemctl管控服务名rabbitmq-server systemctl enable rabbitmq-server # 开机自启 systemctl disable rabbitmq-server # 关闭开机自启 systemctl start rabbitmq-server # 启动 systemctl stop rabbitmq-server # 关闭 systemctl status rabbitmq-server # 查看状态4.放行端口# 方式1推荐关闭防火墙 systemctl stop firewalld # 关闭 systemctl disable firewalld # 关闭开机自启 # 方式2放行5672 25672端口 firewall-cmd --add-port5672/tcp --permanent # 放行tcp规则下的5672端口永久生效 firewall-cmd --add-port15672/tcp --permanent # 放行tcp规则下的15672端口永久生效 firewall-cmd --add-port25672/tcp --permanent # 放行tcp规则下的25672端口永久生效 firewall-cmd --reload # 重新加载防火墙规则rabbitmq-plugins enable rabbitmq_management #启动RabbitMQ的WEB管理控制台#添加admin用户并赋予权限 下面是rabbitmq的命令 rabbitmqctl add_user admin 密码 rabbitmqctl set_permissions -p / admin .* .* .* #最大权限 rabbitmqctl set_user_tags admin administrator#浏览器打开管理控制台 http://192.168.88.130:15672 或 http://centos:156723. Redis安装部署3.1 简介Redis 就是一个超级内存快递柜数据全放在内存里读写速度极快毫秒级专门用来存那些需要频繁读取的热数据。Redis 官方基准测试单机读速度 10万 次/秒写速度 8万 次/秒。Redis的特点就是快它用来干什么(what do)场景没 Redis 时有 Redis 时缓存加速每次查数据库压力大、响应慢热门数据存 Redis直接从内存取秒开分布式锁多台服务器抢资源乱套了Redis 当裁判确保同一时刻只有一台服务器干活实时排行榜每次重新算一遍又慢又累Redis 的有序集合Zset实时维护随时查和 MySQL 的区别对比MySQLRedis数据存在哪硬盘慢慢慢内存快快快能存什么表格数据结构化字符串、哈希、列表、集合、有序集合、位图等 8 种数据类型能不能持久化能断电数据还在能RDB快照 AOF日志但主要还是当缓存用典型组合MySQL 当主力仓库Redis 当高速缓存两者配合使用Redis 把数据放在内存里让访问速度从骑自行车变成坐火箭专门应对数据库扛不住的高并发场景。3.2 安装1. 配置EPEL仓库EPEL 简介EPELExtra Packages for Enterprise Linux是由Fedora 社区主导维护的开源项目专为RHELRed Hat Enterprise Linux及其衍生发行版如 CentOS、Rocky Linux、AlmaLinux 等提供高质量的额外软件包。核心功能是填补官方软件源的空白。企业级 Linux 发行版以稳定为首要目标官方仓库的软件版本往往偏旧、数量有限。许多常用的开源工具如htop、fail2ban、certbot、Nginx等在官方源中并不可用而通过 EPEL 可以一键安装极大扩展了系统的软件生态。EPEL 是企业级 Linux 用户不可或缺的“软件扩充仓库”让系统在保持稳定的同时也能便捷地获取丰富的开源工具是每位运维人员的必备基础配置。#root执行 yum install -y epel-release2. 安装Redis# root执行 yum install -y redis3. 启动Redis# root执行 # 使用systemctl管控服务名redis systemctl enable redis # 开机自启 systemctl disable redis # 关闭开机自启 systemctl start redis # 启动 systemctl stop redis # 关闭 systemctl status redis # 查看状态4.放行端口# 方式1推荐关闭防火墙 systemctl stop firewalld # 关闭 systemctl disable firewalld # 关闭开机自启 # 方式2放行6379端口 firewall-cmd --add-port6379/tcp --permanent # 放行tcp规则下的6379端口永久生效 firewall-cmd --reload5. 启动Redis服务# 执行redis-cli redis-cli 127.0.0.1:6379 set one hello OK 127.0.0.1:6379 get one hello 127.0.0.1:63794. ElasticSearch(ES)安装部署4.1 简介Elasticsearch简称 ES就是一个超级搜索引擎专门用来在海量数据中快速找到你想要的内容。维基百科、Stack Overflow、Github 都采用它。它能干什么what do场景不用 ES 时用了 ES 之后全文搜索用LIKE %关键词%查百万条数据卡半天输入关键字毫秒级返回匹配结果还带高亮日志分析服务器日志散落在各个机器排查问题全靠 grep所有日志统一存 ES随时搜索、聚合分析商品/文章检索按标题和分类简单过滤搜手机出来一堆手机壳智能分词、拼音搜索、相关性排序搜得准和 MySQL 的区别对比MySQLElasticsearch核心能力事务性存储增删改查全文搜索 数据分析搜索方式精确匹配为主LIKE慢且弱倒排索引分词搜索又快又准数据量级千万级还行亿级就吃力了百亿级数据照样轻松检索典型组合MySQL 存原始数据ES 建索引提供搜索两者配合使用核心概念索引≈ MySQL 里的数据库存同一类文档的地方文档≈ MySQL 里的一行记录JSON 格式倒排索引 ES 的秘密武器把文字拆成词建个词 → 文档的目录搜词直接定位不用全文扫荡Elasticsearch 让大海捞针变成按图索骥应对数据量大、搜索慢、模糊匹配不准的毛病。大部分互联网公司的搜索功能MySQL 存数据ES 建索引业务系统搜 ES用户搜得又快又准。4.2 安装1. 添加yum仓库# root执行 # 导入仓库密钥 rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch# 添加yum源 # 编辑文件 vim /etc/yum.repos.d/elasticsearch.repo [elasticsearch-7.x] nameElasticsearch repository for 7.x packages baseurlhttps://artifacts.elastic.co/packages/7.x/yum gpgcheck1 gpgkeyhttps://artifacts.elastic.co/GPG-KEY-elasticsearch enabled1 autorefresh1 typerpm-md # 更新yum缓存 yum makecache2. 安装ESyum install -y elasticsearch3. 配置ESvim /etc/elasticsearch/elasticsearch.yml # 17行设置集群名称 cluster.name: my-cluster # 23行设置节点名称 node.name: node-1 # 56行允许外网访问 network.host: 0.0.0.0 # 74行配置集群master节点 cluster.initial_master_nodes: [node-1]4. 启动ESsystemctl start | stop | status | enable | disable elasticsearch5. 放行端口# 方式1推荐关闭防火墙 systemctl stop firewalld # 关闭 systemctl disable firewalld # 关闭开机自启 # 方式2放行9200端口 firewall-cmd --add-port9200/tcp --permanent # 放行tcp规则下的9200或9300端口永久生效 firewall-cmd --reload6. 测试浏览器打开http://ip:9200/?pretty ​ #浏览器打开管理控制台 http://192.168.88.130:9200 或 http://centos:9300 ​