zoukankan      html  css  js  c++  java
  • 3.高并发教程-基础篇-之分布式全文搜索引擎elasticsearch的搭建

    高并发教程-基础篇-之分布式全文搜索引擎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
            
  • 相关阅读:
    Selenium 2自动化测试实战
    Python学习笔记整理(python 3)
    Python编程中出现ImportError: bad magic number in 'numpy': b'x03xf3 '
    收集的一些表单常用的正则表达式。
    转载的一篇博客,感觉不错,自我感觉很到位,来自 http://www.cnblogs.com/laizhihui/p/5810965.html
    闲来无写的,就是中间有一条小细线,求大神指点。
    自己总结的有关PHP一些基本知识和一些常见的js问题
    不经意间看到的东西,感觉不错(转载)。
    无束缚版贪吃蛇(就问你爽不爽)
    小图局部放大效果(图片的话就自己找一个吧,记得是一张图片用两次,不是两张图片,而且你的图片不一定与我一样,需改一下放大的尺寸)
  • 原文地址:https://www.cnblogs.com/qizexi/p/9048766.html
Copyright © 2011-2022 走看看