创建 Apache Cassandra 的 RPM 包

为了简化部署和配置管理,将Cassandra所需的模块和设置以RPM软件包形式打包。

环境准备

Cassandra的开发环境

or

Cassandra的开发环境配置

首先,请设置Apache Cassandra的开发环境。
本次操作假定在上一页中设置的CentOS7上进行。

JUnit是一个用于Java编程语言的自动化测试框架。

请先下载并安装ant-junit,因为在rpmbuild时会用到。

$ curl -O http://mirror.centos.org/centos/7/os/x86_64/Packages/ant-junit-1.9.4-2.el7.noarch.rpm

安装

$ rpm -ivh ant-junit-1.9.4-2.el7.noarch.rpm

使用rpmbuild

安装 rpmbuild,这是创建 RPM 包所必需的。

    • sudo yum install rpm-build

 

    sudo yum groupinstall ‘Development tools’

进行包装制作

切换到已克隆的Cassandra目录。

[shoshii@cassandra-1 cassandra]$ ls
CASSANDRA-14092.txt  NOTICE.txt  build-shaded-dtest-jar.sh  data                         ide     relocate-dependencies.pom
CHANGES.txt          README.asc  build.properties.default   debian                       lib     src
CONTRIBUTING.md      TESTING.md  build.xml                  doc                          logs    test
LICENSE.txt          bin         cassandra.iml              eclipse_compiler.properties  pylib   tools
NEWS.txt             build       conf                       examples                     redhat
[shoshii@cassandra-1 cassandra]$ 

参考 redhat/README.md,创建软件包。

$ ant artifacts -Drelease=true
$ mkdir -p build/rpmbuild/{BUILD,RPMS,SPECS,SRPMS}
$ rpmbuild --define="version 4.0.1" \
    --define="revision $(date +"%Y%m%d")git$(git rev-parse --short HEAD)%{?dist}" \
    --define "_topdir $(pwd)/build/rpmbuild" \
    --define "_sourcedir $(pwd)/build" \
    -ba redhat/cassandra.spec

请注意,将版本4.0.1的部分根据您所切换的分支进行修改。

[shoshii@cassandra-1 cassandra]$ ls -l build/rpmbuild/RPMS/noarch/
合計 43896
-rw-rw-r-- 1 shoshii shoshii 44940000  7月 15 07:12 cassandra-4.0.1-20210715git51f16a3.el7.noarch.rpm
-rw-rw-r-- 1 shoshii shoshii     6444  7月 15 07:12 cassandra-tools-4.0.1-20210715git51f16a3.el7.noarch.rpm

可以看到生成了两个RPM包,分别是Cassandra和Cassandra-tools。

如果出现rat-check的错误

在进行 rpmbuild 时,可能会出现类似如下的 rat-check 错误。在进行 Cassandra 使用的软件的许可证检查时,似乎会检查本不应该检查的文件。相关JIRA。

rat-check:

BUILD FAILED
/home/shoshii/qiita/cassandra-docker/cassandra/build/rpmbuild/BUILD/apache-cassandra-4.0.1-src/.build/build-rat.xml:79: Some files have missing or incorrect license information. Check RAT report in /home/shoshii/qiita/cassandra-docker/cassandra/build/rpmbuild/BUILD/apache-cassandra-4.0.1-src/build/rat.txt for more details! \n Unapproved licenses:

  /home/shoshii/qiita/cassandra-docker/cassandra/build/rpmbuild/BUILD/apache-cassandra-4.0.1-src/.circleci/config-2_1.yml.high_res.patch
  /home/shoshii/qiita/cassandra-docker/cassandra/build/rpmbuild/BUILD/apache-cassandra-4.0.1-src/.circleci/config-2_1.yml.mid_res.patch
  /home/shoshii/qiita/cassandra-docker/cassandra/build/rpmbuild/BUILD/apache-cassandra-4.0.1-src/.jenkins/Jenkinsfile
  /home/shoshii/qiita/cassandra-docker/cassandra/build/rpmbuild/BUILD/apache-cassandra-4.0.1-src/CASSANDRA-14092.txt

Total time: 7 seconds

作为临时解决措施,我在.build/build-rat.xml中添加了排除引发错误的文件的设置。如果您在自己的环境中遇到类似错误,您也可以通过这种处理方式来解决。

diff --git a/.build/build-rat.xml b/.build/build-rat.xml
index ce4e6f4..4c50c90 100644
--- a/.build/build-rat.xml
+++ b/.build/build-rat.xml
@@ -67,7 +67,14 @@
                  <exclude name="**/tools/cqlstress-example.yaml"/>
                  <exclude name="**/tools/cqlstress-insanity-example.yaml"/>
                  <exclude name="**/tools/cqlstress-lwt-example.yaml"/>
-                 <!-- NOTICE files -->
+                 <exclude name="**/.idea/**/*"/>
+                 <exclude name="**/.circleci/**/*"/>
+                 <exclude name="**/.jenkins/**/*"/>
+                 <exclude name="CASSANDRA-14092.txt"/>
+                 <exclude name="CHANGES.txt"/>
+                 <exclude name="README.asc"/>
+                 <exclude name="build.properties.default"/>
+                <!-- NOTICE files -->
                  <exclude NAME="**/NOTICE.md"/>
                  <!-- LICENSE files -->
                  <exclude NAME="**/LICENSE.md"/>

安装和执行

使用rpm -ivh命令进行安装。

[shoshii@cassandra-1 cassandra]$ sudo rpm -ivh build/rpmbuild/RPMS/noarch/cassandra-4.0.1-20210715git51f16a3.el7.noarch.rpm 
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:cassandra-4.0.1-20210715git51f16a################################# [100%]
[shoshii@cassandra-1 cassandra]$ 

使用sudo -u cassandra命令在Cassandra用户下执行。

[shoshii@cassandra-1 cassandra]$ sudo -u cassandra cassandra
[shoshii@cassandra-1 cassandra]$ CompilerOracle: dontinline org/apache/cassandra/db/Columns$Serializer.deserializeLargeSubset (Lorg/apache/cassandra/io/util/DataInputPlus;Lorg/apache/cassandra/db/Columns;I)Lorg/apache/cassandra/db/Columns;
...略
INFO  [main] 2021-07-15 09:16:24,045 StorageService.java:2737 - Node localhost/127.0.0.1:7000 state jump to NORMAL

根据启动日志的最后一行显示,状态已成功跳转至正常状态,因此看来启动成功。

我尝试连接到通过cqlsh启动的Cassandra。

[shoshii@cassandra-1 cassandra]$ bin/cqlsh
Connected to Test Cluster at 127.0.0.1:9042
[cqlsh 6.0.0 | Cassandra 4.0.1 | CQL spec 3.4.5 | Native protocol v5]
Use HELP for help.
cqlsh> 

我已经连接上了。

安装和运行cassandra-tools。

在安装 Cassandra-Tools 时,虽然不是直接必需的,但可以为操作提供方便的工具。

[shoshii@cassandra-1 cassandra]$ sudo rpm -ivh build/rpmbuild/RPMS/noarch/cassandra-tools-4.0.1-20210715git51f16a3.el7.noarch.rpm
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:cassandra-tools-4.0.1-20210715git################################# [100%]
[shoshii@cassandra-1 cassandra]$ 

我们尝试使用nodetool status命令来检查集群状态。

[shoshii@cassandra-1 cassandra]$ nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address    Load       Tokens  Owns (effective)  Host ID                               Rack 
UN  127.0.0.1  69.05 KiB  16      100.0%            b2334131-34e5-45a4-bd89-35efcc73b2ed  rack1

[shoshii@cassandra-1 cassandra]$ 

上面显示了Cassandra节点的状态、地址和负责的数据量。
在上面的显示中,状态(最左边的列)显示为UN。这是Up Normal的缩写,意味着Cassandra正常启动并能够接受处理。

请参考

这是我参考过的页面。

    【簡単に解説】RPMパッケージを作成する方法

以上就是。

广告
将在 10 秒后关闭
bannerAds