高并发教程-基础篇-之分布式全文搜索引擎elasticsearch的搭建

如果大家看了我的上一篇《2.高并发教程-基础篇-之nginx+mysql实现负载均衡和读写分离》文章,如果能很好的利用,那么其实已经可以轻松日抗千万级别的访问量了,但是如果业务涉及查询比较多,查询条件比较丰富,又或者我就想要查询的响应更快点,那么在mysql上面去做优化,其实比较辛苦,有没有更好的解决方案呢?答案是肯定的!它就是我们今天的主角,分布式全文搜索引擎elasticsearch.

技巧提示:mysql集群层主要提供核心业务逻辑的读写以及数据的冗余备份;elasticsearch负责前端的查询和展示。比如,用户的所有写操作都是在mysql的master服务器上面完成;然后通过主从机制,把数据同步至多个mysql从机,然后通过从机把数据同步至elasticsearch.因为有多个mysql从机,所有同步的时候划分合适数量的表分担至各个从机去同步,这样既可以减轻各个mysql服务器的压力,又可以更加高效同步。同步工具这里推荐logstash,大家自行搜索了解,如果遇到坑可以留言。

一、架构图

服务器准备:3台,ubuntu16.04系统+elasticsearch-6.2.4
slave1:192.168.1.191 ES集群master
slave2:192.168.1.192 ES集群slave
slave3:192.168.1.193 ES集群slave
[注意:nginx方向代理和mysql集群的配置这里不做说明,大家可以看我的之前的文章]

二、elasticsearch配置(分别在三台服务器上面进行如下操作)

1.java环境配置:

    *请自行前往java官方下载java,然后解压至合适目录
vim /etc/profile加入如下内容:
#java
export JAVA_HOME=/home/qizexi/data/java #这个改为你java的解压目录
export JAVA_CLASS=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/jre/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
保存,退出
source /etc/profile
java -version看到如下内容即是java安装成功
---------------------------------------
java version "1.8.0_141"
---------------------------------------

2.账号准备:

    elasticsearch不允许以root账号运行,所以我们可以添加一个es用户来负责运行elasticsearch
useradd es
passwd es 将elasticsearch-6.2.4的安装目录变更为es用户
chown -R es:es elasticsearch-6.2.4 改变ulimit的1024的限制
vim /etc/security/limits.conf
* hard nofile 100000
* soft nofile 100000
* hard nproc 100000
* soft nproc 100000
保存退出
source /etc/security/limits.conf
切换es用户(su es)之后运行
ulimit -n可以看到
100000
说明成功,否则可以重启生效:) 改变max_map_countd的限制:
vim /etc/sysctl.conf修改如下配置:
vm.max_map_count=262144
保存退出
运行:sysctl -p

3.主服务器配置(191):

    cd 到elasticsearch-6.2.4的解压目录
vim config/elasticsearch.yml修改如下内容:
cluster.name: my-app
node.name: master
network.host: 192.168.1.191
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.1.191", "192.168.1.192", "192.168.1.193"]
保存,然后使用es账号启动即可.
su es
bin/elasticsearch -d
su root
netstat -tlnp看到如下内容即是成功(有可能过几秒钟才能看到):
------------------------------------------------------
192.168.1.191:9200
192.168.1.191:9300

4.配置从服务器(192,193):

    cd 到elasticsearch-6.2.4的解压目录
vim config/elasticsearch.yml修改如下内容:
cluster.name: my-app
node.name: slave1 #193服务器改为slave2
network.host: 192.168.1.192 #193服务器改为192.168.1.193
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.1.191", "192.168.1.192", "192.168.1.193"]
保存,然后使用es账号启动即可.
su es
bin/elasticsearch -d
su root
netstat -tlnp看到如下内容即是成功(有可能过几秒钟才能看到):
-------------------------------------------------------
192.168.1.192:9200 #192上面看到是193
192.168.1.192:9300 #192上面看到是193

5.查看集群的状态:

    curl -XGET 'http://192.168.1.191:9200/_cat/nodes?v'
看到三个节点即可成功:
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
192.168.1.191 25 55 0 0.00 0.01 0.00 mdi * master
192.168.1.192 22 97 5 0.70 0.34 0.17 mdi - slave1
192.168.1.193 20 75 30 0.54 0.14 0.05 mdi - slave2

3.高并发教程-基础篇-之分布式全文搜索引擎elasticsearch的搭建的更多相关文章

  1. 2.高并发教程-基础篇-之nginx+mysql实现负载均衡和读写分离

    技巧提示:mysql读写分离搭建好之后,配合nginx的负载均衡,可以高效的mysql的集群性能,同时免去麻烦的query分流.比如,sever1收到的请求就专门链接slave1从mysql读取数据, ...

  2. 高并发教程-基础篇-之nginx负载均衡的搭建

    温馨提示:请不要盲目的进行横向扩展,优先考虑对单台服务器的性能优化,只有单台服务器的性能达到最优化之后,集群才会被最大的发挥作用. 一.架构图: 服务器准备:3台,ubuntu16.04系统maste ...

  3. 1.高并发教程-基础篇-之nginx负载均衡的搭建

    温馨提示:请不要盲目的进行横向扩展,优先考虑对单台服务器的性能优化,只有单台服务器的性能达到最优化之后,集群才会被最大的发挥作用. 一.架构图: 服务器准备:3台,ubuntu16.04系统maste ...

  4. 分布式全文搜索引擎ElasticSearch—超详细

    1 ElasticSearch 1.1 ES的概念和特点 ES:全文检索的框架,专门做搜索,支持分布式.集群.封装的Lucene. 特点: 原生的Lucene使用的不足,优化了Lucene的调用方式 ...

  5. 分布式全文搜索引擎ElasticSearch

    一 什么是 ElasticSearch Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎.当然 Elas ...

  6. 深度学习入门者的Python快速教程 - 基础篇

      5.1 Python简介 本章将介绍Python的最基本语法,以及一些和深度学习还有计算机视觉最相关的基本使用. 5.1.1 Python简史 Python是一门解释型的高级编程语言,特点是简单明 ...

  7. Java高并发编程基础三大利器之CountDownLatch

    引言 上一篇文章我们介绍了AQS的信号量Semaphore<Java高并发编程基础三大利器之Semaphore>,接下来应该轮到CountDownLatch了. 什么是CountDownL ...

  8. java多线程与并发(基础篇)

    一.进程与线程 进程:是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位. 线程:是进程的一个执行路径,一个进程中至少有一个线程,进程中的多个线程共享进程的 资源. 虽然系统是把资源 ...

  9. 高并发编程基础(java.util.concurrent包常见类基础)

    JDK5中添加了新的java.util.concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能.因为同步容器将所有对容器状态的访问都串行化了,这样保证了线程的安全性,所以这种方法 ...

随机推荐

  1. Windows安装ActiveMQ记录

    1.下载压缩包(activeMQ应用要基于jdk服务上,安装本软件时,最好已经安装了jdk并且配置好了环境变量) 下载5.12.2版本:http://activemq.apache.org/activ ...

  2. C# 注释&SQL注释

    SQL注释: 1.单行注释:--单行注释 2.多行注释:/*多行 注释*/ C#注释: 1.单行注释://单行注释 2.多行注释:/*多行 注释*/ 3.说明注释:///<summary> ...

  3. <pre> <textarea> <code>标签区别

    这篇文章里面放的大都是我自己写程序的时候遇到的一些小问题,其实都是自己没有掌握的点,别人看起来应该很简单啦,但写下来能提醒自己,也能鼓励一下自己,这条路也不好走哇. <pre> <t ...

  4. 微服务架构之spring cloud gateway

    Spring Cloud Gateway是spring cloud中起着非常重要的作用,是终端调用服务的入口,同时也是项目中每个服务对外暴露的统一口径,我们可以在网关中实现路径映射.权限验证.负载均衡 ...

  5. Android深入四大组件(四)Android8.0 根Activity启动过程(前篇)

    前言 在几个月前我写了Android深入四大组件(一)应用程序启动过程(前篇)和Android深入四大组件(一)应用程序启动过程(后篇)这两篇文章,它们都是基于Android 7.0,当我开始阅读An ...

  6. 《ArcGIS Runtime SDK for Android开发笔记》——(4)、基于Android Studio构建ArcGIS Android开发环境

    1.前言 2015年1月15日,发布ArcGIS Runtime SDK for Android v10.2.5版本.从该版本开始默认支持android studio开发环境,示例代码的默认开发环境也 ...

  7. PHP两种实现无级递归分类的方法

    /** * 无级递归分类 TP框架 * @param int $assortPid 要查询分类的父级id * @param mixed $tag 上下级分类之间的分隔符 * @return strin ...

  8. centos ntfs-3g 安装和使用

    安装fuse 下载fuse(ntfs-3g依赖fuse):http://vdisk.weibo.com/s/ajww5fZsUq50L?from=page_100505_profile&wvr ...

  9. Python学习---Django的验证码

    [更多参考] http://www.cnblogs.com/wupeiqi/articles/4786251.html

  10. MySQL 数据库 -- 数据操作

    数据的增删改 一 介绍 MySQL数据操作: DML ======================================================== 在MySQL管理软件中,可以通过 ...