2021年11月18日 00:07
原创作品,转载时请务必以超链接形式标明文章原始出处,否则将追究法律责任。

最近的生活就像黄昏,感觉黎明太遥远,需要一个漫长的黑夜。自从接手其他组的项目以来,我带领三个新员工举步维艰。东西太多,细节太多,骨头怎么啃是个问题。记得7年前,我和大卫两个人搞BigData,什么经验都没有,windows service导20万的商品数据到cassandra,加班到半夜两点半。那个阶段有时候真想撂挑子让大卫一个人去干,但是最终还是告诉自己去哪里都会有这样那样的问题,不能逃避。当时公司有个小伙叫Ric,大数据方面的专家,他可以离线同步数据,啥意思,就是人家吃透了Cassandra数据文件的结构,只需要根据文件结构把物理文件生成好,放到Cassandra数据目录下面就行了,看看人家,再看看我们的处理方式,真的是不能比。后来Ric还研发了金丝雀,据说要比Aquiles快很多,后来由于种种原因,James也说我们不给力,后来把项目给了台湾。如今项目又回来了,我岂能又不给力?红灯不会永远是红灯,也许下一秒就是绿灯。

截图20211117231858.png

废话不多说,今天看一下CentOS上Cassandra集群的搭建。

第一步:准备WinSCP工具,MobaXterm工具,最好再有个文本编辑工具,比如VSCode之类的

第二步:下载tomcat 8.5.72,zookeeper 3.7.0,solr 7.3.1,jdk1.8以上版本

tomcat:https://tomcat.apache.org/download-80.cgi

solr:https://solr.apache.org/downloads.html

jdk:http://www.jdkdownload.com/index.html?download=jdk-8u181-linux-x64.tar.gz#download

zookeeper: https://downloads.apache.org/zookeeper/zookeeper-3.7.0/

第三步:linux环境变量配置,修改etc/profile,然后source /etc/profile使环境变量立即生效

第四步:先搭建zookeeper集群,关于zookeeper集群的搭建请参考我的上一篇文章:zookeeper集群搭建

第五步:将tomcat复制四份到/usr/local/solrcloud文件夹中,如下

image.png

命名为apache-tomcat01~04,复制好之后,我们需要修改端口号,以apache-tomcat01为例,我们修改server.xml配置文件中的端口号,xml文件路径/usr/local/solrcloud/apache-tomcat04/conf/server.xml

第一个端口

image.png

第二个端口改为8101

image.png

第三个端口改为8109

image.png

OK,最终四个tomcat全部改完后的端口号如下

tomcat01810581018109
tomcat02820582018209
tomcat03830583018309
tomcat04840584018409

ok,端口号至此就修改完了,这里我建议在WinSCP配置VSCode作为编辑工具直接修改,使用vi命令编辑有点痛苦。如下在文件上右键=>编辑=>配置,然后点击添加找到VSCode exe文件所在路径就行了,以后编辑的时候选项中就可以选择VSCode编辑文件。

image.png

第六步:将solr工程拷贝到tomcat目录的webapps目录下,如下从左边solr-webapp\webapp拷贝到右边apache tomcat webapps目录下的solr目录,

image.png

第七步:为这四个solr实例创建solr home,我们需要新建四个文件夹,solrhome1~4

image.png

solr home从哪里来呢,请看下面

image.png

把这几个文件copy过去就行了。然后我们需要对solr.xml进行修改,这里对于solrhome1对应tomcat01中的ip地址加端口

image.png

对于solrhome1它的host需要设置成tomcat01中的ip+端口,所以是8101端口,对于solrhome2就是8201以此类推。ok至此solr home就设置完成了。

第八步:既然solrhome已经创建完毕,那么tomcat中host的solr必须指向这些solrhome,以tomcat01为例,我们修改webapps/solr/WEB-INF下面的web.xml

image.png

把这里的solr home设置为solrhome1,同样的道理,tomcat02 webapps/solr/WEB-INF下面的web.xml中的solr home修改为solrhome2,以此类推,最后把四个都改完。

第九步:将配置文件上传至zookeeper集群,让zookeeper进行统一管理。因为我之前这里为这个技术站创建过一个solr的core,所以我就直接使用这个schema配置就行了。

<field name="ArticleId" type="delimited_payloads_string" indexed="true" required="true" stored="true"/>
<field name="Content" type="text_general"/>
<field name="Contents" type="string" indexed="true" required="true" stored="true"/>
<field name="Tags" type="string" indexed="true" stored="true"/>
<field name="Title" type="string" indexed="true" required="true" stored="true"/>

所以我们直接把这个conf文件夹下的配置上传至zookeeper,首先我们要切换到zkcli工具的目录下,这个目录在哪里呢,在你的solr解压缩以后的server/scripts/cloud-scripts下面。

image.png

ok,我们执行如下命令

./zkcli.sh -zkhost 172.26.233.95:2181,172.26.233.95:2182,172.26.233.95:2183 -cmd upconfig -confdir /root/bruce/solr-7.3.1/server/solr/new_core/conf -confname mysolr_zkconf

是否上传成功,我们只需要进入zookeeper集群看看就行了

[root@bruce solrcloud]# cd zookeeper01
[root@bruce zookeeper01]# cd bin
[root@bruce bin]# ls
README.txt    zkCli.cmd  zkEnv.cmd  zkServer.cmd            zkServer.sh             zkSnapshotComparer.sh  zkSnapShotToolkit.sh  zkTxnLogToolkit.sh
zkCleanup.sh  zkCli.sh   zkEnv.sh   zkServer-initialize.sh  zkSnapshotComparer.cmd  zkSnapShotToolkit.cmd  zkTxnLogToolkit.cmd
[root@bruce bin]# ./zkCli.sh
Connecting to localhost:2181
2021-11-18 01:11:02,916 [myid:] - INFO  [main:Environment@98] - Client environment:zookeeper.version=3.7.0-e3704b390a6697bfdf4b0bef79e3da7a4f6bac4b, built on 2021-03-17 09:46 UTC

我们用zookeeper01的cli工具进到集群,然后使用命令ls /configs查看是否已经上传成功

image.png

看到没,已经上传成功了,名称就是我们执行上传命令中设定的名称mysolr_zkconf。

ok,至此已经大工告成80%了。

第十步:把solr和zookeeper的配置关联起来,怎么关联?修改tomcat01~04 bin目录下的catalina.sh文件,在如下位置加入JAVA_OPTS,是指zookeeper的集群ip

image.png

完成之后,启动四个tomcat,接下来就是见证奇迹的时刻,先搞两个节点,没有任何问题

/usr/local/solrcloud/apache-tomcat01/bin/startup.sh
/usr/local/solrcloud/apache-tomcat02/bin/startup.sh

Schema没问题,读取的是zookeeper集群的配置

image.png

再看一下拓扑结构

image.png

再启动tomcat03,新建一个brucetest的collection,shared为2,replication为1,最终拓扑如下

image.png


注:如果中途出现solr地址请求404的错误,需要注意以下几点

  • 关闭防火墙

  • 修改tomcat目录下的conf/web.xml文件中的listings改为true,注释掉

    • <servlet>
          <servlet-name>default</servlet-name>
          <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
          <init-param>
              <param-name>debug</param-name>
              <param-value>0</param-value>
          </init-param>
          <init-param>
              <param-name>listings</param-name>
              <param-value>true</param-value>
          </init-param>
          <load-on-startup>1</load-on-startup>
      </servlet>
  • 注释掉solr/WEB_INF目录下web.xml文件中的如下配置

    • <!-- Get rid of error message
        <security-constraint>
          <web-resource-collection>
            <web-resource-name>Disable TRACE</web-resource-name>
            <url-pattern>/</url-pattern>
            <http-method>TRACE</http-method>
          </web-resource-collection>
          <auth-constraint/>
        </security-constraint>
        <security-constraint>
          <web-resource-collection>
            <web-resource-name>Enable everything but TRACE</web-resource-name>
            <url-pattern>/</url-pattern>
            <http-method-omission>TRACE</http-method-omission>
          </web-resource-collection>
        </security-constraint>
       -->
  • 如果还是不行,那一定是缺少了jar包,需要copy一些jar包到solr\WEB-INF\lib文件夹中,具体操作流程如下

    • server/lib/ext目录下的所有jar包和dist下的solr-dataimporthandler、solr-dataimporthandler开头的jar包复制到tomcat下的solr项目的WEB-INF/lib目录下
      image.png

    • server/lib下metrics开头的5个jar拷到tomcat\webapps\solr\WEB-INF\lib下
      image.png

发表评论
匿名  
用户评论
暂无评论