分布式搜索引擎(Elastic Search)+消息队列(RabbitMQ)部署

Elastic Search的目标就是实现搜索。是一款非常强大的开源搜索引擎,可以帮助我们从海量数据中快速找到需要的内容。在数据量少的时候,我们可以通过索引去搜索关系型数据库中的数据,但是如果数据量很大,搜索的效率就会很低,这个时候我们就需要一种分布式的搜索引擎。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elastic search结合kibana、Logstash、Beats,也就是elastic stack(ELK),被广泛应用在日志数据分析、实时监控等领域。而elastic search是elastic stack的核心,负责存储、搜索、分析数据。

Elastic search是一个基于Lucene的搜索服务器。Elastic search底层是基于lucene来实现的。Lucene是一个Java语言的搜索引擎类库,是Apache公司的顶级项目。

ES中的存储是这样的:

一个索引(indeces)相当于一个数据库(database),每个索引中有多个类型types(相当于表结构),每个索引中有多个documents(相当于行),每个documents由多个fields组成(相当于字段)。

你可以把ES理解为他是一个面向文档的数据库。下面用一张图描述ES和关系型数据库之间的相似之处:

在企业中,往往是Elasticsearch和mysql两者结合使用:

1、对安全性要求较高的写操作,使用mysql实现

2、对查询性能要求较高的搜索需求,使用elasticsearch实现

3、两者再基于某种方式,实现数据的同步,保证一致性

Elastic Search与MySQL的特征:

MySQL:擅长事务类型操作,可以确保数据的安全和一致性

Elastic Search:擅长海量数据的搜索、分析、计算

二、RabbitMQ

RabbitMQ主要任务是处理海量的信息。主要用于分布式系统的内部各子系统之间的数据存储转发,这是系统解耦方面的一种运用。它是对AMQP协议的实现,支持多种客户端,可以对来自客户端的异步消息进行存储转发,在易用性、扩展性、高可用性等方面表现不俗。

RabbitMQ的特点:

1、基于ErLang语言开发具有高可用高并发的优点,适合集群服务器;

2、健壮、稳定、易用、跨平台、支持多种语言、文档齐全;

3、可靠性高,有消息确认机制和持久化机制,;

4、可靠性:RabbitMQ支持持久化,保证了消息的稳定性;

5、高并发高可用: RabbitMQ使用了Erlang作为开发语言,Erlang是为电话交换机开发的语言,天生自带高并发和高可用的光环;可用于高并发系统当中的流量削峰,将请求流量数据临时存放到RabbitMQ当中,从而避免大量的请求流量直接达到后台服务,把后台服务冲垮。

6、集群部署简单:正是因为Erlang使得RabbitMQ集群部署变的超级简单;

7、RabbitMQ是实现了AMQP标准的消息服务器。

RabbitMQ是一种基于erlang语言开发的流行的开源消息中间件,或者说是一个消息队列系统。消息的生产者把要发送的消息放入到消息队列中,消息的接收端可以根据RabbitMQ配置的转发机制接收服务端发来的消息。RabbitMQ依据指定的转发规则进行消息的转发、缓冲和持久化操作,主要用在多服务器间或单服务器的子系统间进行通信,RabbitMQ是分布式系统的标准配置。

三、安装部署:

  1. 确保系统已经安装jdk1.8及以上版本

  2. 添加用户

    useradd admin

  3. 解压

    (1)tar xf elasticsearch-5.6.7.tar.gz -C /usr/local

    (2)cd /usr/local

  4. 设置软链

    ln -sv elasticsearch-5.6.7 elasticsearch

    5.创建文件夹

    mkdir -pv /usr/local/elasticsearch/{data,logs}

    mkdir -p /usr/local/elasticsearch/plugins

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

  5. 设置权限

    chown -R admin.admin /usr/local/elasticsearch-5.6.7

  6. 修改配置文件

    vi /usr/local/elasticsearch/config/elasticsearch.yml




    cluster.name: my_application

换个节点名字

node.name: node-1

path.data: /usr/local/elasticsearch/data

path.logs: /usr/local/elasticsearch/logs

修改一下ES的监听地址,这样别的机器也可以访问

network.host: 0.0.0.0

http.port: 9200

增加新的参数,这样head插件可以访问es

http.cors.enabled: true

http.cors.allow-origin: "*"

  1. 编辑limit.conf文件
    vi /etc/security/limits.conf
  2. 编辑sysctl.conf文件 /etc/sysctl.conf

vm.max_map_count= 262144

sysctl -p

  1. 启动es服务,切换至上面添加的admin用户

(1)指令如下

cd /usr/local

chown -R admin.admin /usr/local/elasticsearch-5.6.7

su admin

(2)启动es

cd elasticsearch/bin

./elasticsearch

  1. 可能遇到的问题

  2. 安装ik分词器 解压后文件名称改为ik-analysis

    放入 /usr/local/elasticsearch/plugins

    切换root 执行这个命令

    chown -R admin.admin /usr/local/elasticsearch-5.6.7

  3. 后台启动es

    cd /usr/local/elasticsearch/bin

    su admin

    ./elasticsearch -d

(二)RabbitMQ安装

  1. 上传安装包

2 解压

tar -zxvf otp_src_22.0.tar.gz

  1. 移走

mv otp_src_22.0 /usr/local/

  1. 切换目录

cd /usr/local/otp_src_22.0/

  1. 安装依赖

yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget gtk2-devel binutils-devel




  1. 创建即将安装的目录
    mkdir .../erlang
  2. 配置安装路径
    chmod +7 /usr/local/erlang
    ./configure --prefix=/usr/local/erlang

提示权限不够时,以下路径给root配置+7权限

chmod +7 /usr/local/opt_src_22.0/Erts/configure

chmod +7 /usr/local/opt_src_22.0/Make/configure

chmod +7 /usr/local/opt_src_22.0/Lib/common-test/configure

chmod +7 /usr/local/opt_src_22.0/Lib/crypto/configure

chmod +7 /usr/local/opt_src_22.0/Lib/erl-interface/configure

chmod +7 /usr/local/opt_src_22.0/Lib/megaco/configure

chmod +7 /usr/local/opt_src_22.0/Lib/odbc/configure

chmod +7 /usr/local/opt_src_22.0/Lib/snmp/configure

chmod +7 /usr/local/opt_src_22.0/Lib/wx/configure

  1. 安装

    make install


  2. 查看一下是否安装成功

    ll /usr/local/erlang/bin

  3. 添加环境变量

    echo 'export PATH=$PATH:/usr/local/erlang/bin' >> /etc/profile




  4. 刷新环境变量

    source /etc/profile

  5. 执行erl (在安装目录下执行)

通过生效的环境变量执行(相当于有了DOS系统搜索路径后,再执行.exe或.com .bat)

  1. halt().命令退出来

  2. 由于是tar.xz格式的所以需要用到xz,没有的话就先安装

    yum install -y xz

  3. 解压rabbitmq-server-generic-unix 第一次解压

    tar /bin/xz -d rabbitmq-server-generic-unix-3.7.15.tar.xz

  4. 第二次解压

    tar -xvf rabbitmq-server-generic-unix-3.7.15.tar

  5. 移走

    mv rabbitmq_server-3.7.15/ /usr/local/

    cd /usr/local/

  6. 改名

    mv /usr/local/rabbitmq_server-3.7.15 rabbitmq

  7. 配置环境变量

    echo 'export PATH=$PATH:/usr/local/rabbitmq/sbin' >> /etc/profile

  8. 刷新环境变量

    source /etc/profile

  9. 启动 停止 状态

    rabbitmq-server --detached

rabbitmqctl stop

rabbitmqctl status

  1. 开启web插件

    rabbitmq-plugins enable rabbitmq_management

  2. 添加一个用户

    rabbitmqctl add_user admin yuanfeng021

  3. 配置权限

    rabbitmqctl set_permissions -p "/" admin "." ". " ".*"

    rabbitmqctl set_user_tags admin administrator

    26、在CentOS8本机上访问:http://XXX.XXX.XXX:15672/ admin yuanfeng021

27、此时发现在局域网上不能访问,所以

(1)查看CentOS上开启的端口号

可以看出,并没有15672端口未被开启

(2)通过命令firewall-cmd --add-port=xxx/tcp命令开启5672、15671、15672三个端口

若永久开启15672端口时,使用命令firewall-cmd --permanet --add-port=15672/tcp

(3)修改rabbitmq的配置文件,rabbitmq-env

增加一行内容如下:(大写)

NODE_IP_ADDRESS=192.168.0.132(你安装rabbitmq server的CentOS的网卡ip地址)

(4)从局域网的电脑telnet测试rabbitmq-server的15672端口号

测试结果如下:说明15672端口开启正常(左上方的光标一闪一闪,未提示连接端口失败)

28、从局域网访问rabbitmq-server正常,如下图:

访问成功,至此分布式搜索引擎(Elastic Search)+消息队列(RabbitMQ)部署结束,不足之处敬请批评指正。

相关推荐
夕泠爱吃糖27 分钟前
Linux中的静态库和动态库
linux·运维·服务器
Vic1010134 分钟前
Java 开发笔记:多线程查询逻辑的抽象与优化
java·服务器·笔记
搬砖天才、1 小时前
kafka集群安装
分布式·kafka
moppol2 小时前
探索下一代云存储技术:对象存储、文件存储与块存储的区别与选择
服务器
电商数据girl2 小时前
有哪些常用的自动化工具可以帮助处理电商API接口返回的异常数据?【知识分享】
大数据·分布式·爬虫·python·系统架构
ZeroNews内网穿透3 小时前
服装零售企业跨区域运营难题破解方案
java·大数据·运维·服务器·数据库·tcp/ip·零售
神的孩子都在歌唱3 小时前
常见的网络攻击方式及防御措施
运维·服务器·网络
深度学习04074 小时前
【Linux服务器】-安装ftp与sftp服务
linux·运维·服务器
即将雄起的运维玩家4 小时前
kafka-kraft+SASL版本升级3.7.0-->3.9.1
分布式·kafka
上上迁4 小时前
分布式接口幂等性的演进和最佳实践,含springBoot 实现(Java版本)
java·spring boot·分布式