AlmaLinux/Oracle Linux安装配置Apache Cassandra
本文介绍在AlmaLinux 8/Oracle Linux 8系统上安装和配置Apache Cassandra的方法。Apache Cassandra是一个开源NoSQL数据库,能够处理大量非结构化数据类型,该工具于2008年成为开源项目,后来于2009年由Apache拥有,Cassandra基于两个主要产品,即DynamoDB和Google的Big Table,进行对等设计。
安装和配置Apache Cassandra的方法
步骤1、更新系统
首先刷新存储库缓存并更新系统上的所有包:
sudo dnf update
现在,在Alma Linux 8、Oracle Linux 8上安装EPEL存储库:
sudo dnf install yum-utils
sudo dnf install epel-release
按如下所示启用PowerTools:
sudo dnf config-manager --set-enabled powertools
步骤2、在Alma Linux 8、Oracle Linux 8上安装Java
由于Apache Cassandra是用Java编写的,因此在继续之前,我们需要在系统上安装Java。在本指南中,我们将安装OpenJDK11以提供如下Java运行时环境:
sudo dnf install java-11-openjdk
安装后,验证版本:
$ java --version
openjdk 11.0.14
步骤3、在Alma Linux 8、Oracle Linux 8上添加Apache Cassandra存储库
Cassandra软件包在默认的Alma Linux 8、Oracle Linux 8软件包存储库中不可用,因此需要添加。从官方存储库安装Cassandra的主要好处是,我们可以使用简单的update命令保证获得最新的软件更新。
使用您喜爱的编辑器创建存储库:
sudo vi /etc/yum.repos.d/cassandra.repo
在文件中,添加以下行:
[cassandra]
name=Apache Cassandra
baseurl=https://downloads.apache.org/cassandra/redhat/40x/
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://downloads.apache.org/cassandra/KEYS
该存储库属于4.0版本,如果要安装Cassandra较旧的版本,请自行调整。
保存文件并更新包索引:
sudo dnf update -y
步骤4、在Alma Linux 8、Oracle Linux 8上安装Apache Cassandra
使用上面添加的存储库,我们可以使用以下命令在Alma Linux 8、Oracle Linux 8上轻松安装最新版本的Apache Cassandra:
sudo dnf install cassandra
会返回cassandra noarch 4.0.2-1 cassandra 45 M等信息。
接受GPG密钥导入并继续安装。
步骤5、启动并启用Cassandra服务
安装后,我们需要启动Cassandra服务并使其在系统启动时自动运行。这可以使用以下命令完成:
sudo service cassandra start
sudo systemctl enable cassandra
验证服务是否正在运行:
$ systemctl status cassandra
您还可以验证Cassandra是否在localhost:9042上运行,如下所示。记住要等到Cassandra完成所有模块的加载:
nodetool status
步骤6、安装Cassandra查询语言
为了能够与Cassandra交互,我们需要与Python 2.7或Python 3.6+兼容的cqlsh工具。在本指南中,我们将使用如下安装的Python 3.8:
sudo dnf install python38
如果您有多个版本。您可能需要设置默认的Python版本,如下所示:
$ sudo update-alternatives --config python3
There are 2 programs which provide 'python3'.
*+ 1——/usr/bin/python3.6
2——/usr/bin/python3.8
检查Python版本:
$ python3 --version
Python 3.8.8
现在使用PIP,安装cqlsh工具:
pip3 install --user cqlsh
验证安装:
$ cqlsh --version
cqlsh 6.0.0
步骤7、在Alma Linux 8、Oracle Linux 8上配置Apache Cassandra
Apache Cassandra配置文件位于/etc/cassandra下,Java启动可以在/etc/default/cassandra下配置。
7.1、配置存储
这一步骤适用于希望将辅助磁盘配置为Apache Cassandra存储的用户。默认情况下,Apache Cassandra将其数据存储在/var/lib/cassandra。但是,在本指南中,我们将通过在数据存储的路径上安装外部磁盘来配置此存储。
首先,确定辅助连接的存储:
$ lsblk
这里,辅助磁盘是/dev/sda。使用mkfs命令将磁盘格式化为EXT4:
sudo mkfs.ext4 /dev/sda
样本输出
mke2fs 1.45.6
Discarding device blocks: done
Creating filesystem with 5242880 4k blocks and 1310720 inodes
Filesystem UUID: 5c3c4032-637b-4e07-9772-83fe0425a6bd
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
验证分区是否已创建:
$ lsblk -f
现在,我们将把这个磁盘装载到/var/lib/cassandra,如下所示:
sudo cp -r /var/lib/cassandra /var/lib/cassandra.bak
sudo mount /dev/sda /var/lib/cassandra
验证安装:
$ df -hT -P /var/lib/cassandra
还原备份并设置正确的权限:
sudo mv/var/lib/cassandra.bak/*/var/lib/cassandra
sudo chown-R cassandra:cassandra/var/lib/cassandra
现在,按以下方式配置永久安装:
$ sudo vim /etc/fstab
/dev/sda /var/lib/cassandra ext4 defaults 0 0
现在,我们将辅助存储配置为Apache Cassandra数据存储。要应用更改,请重新启动Cassandra:
sudo systemctl restart cassandra
7.2、更改群集名称
配置完成后,使用以下命令切换到CQL Shell:
cqlsh
样本输出:
使用以下步骤更改群集名称。
首先,在CQL Shell中运行以下命令:
UPDATE system.local SET cluster_name = 'My CLuster' WHERE KEY = 'local';
退出shell:
exit;
现在编辑下面的Cassandra文件:
sudo vi /etc/cassandra/default.conf/cassandra.yaml
将群集名称替换为集合名称,如下所示:
# The name of the cluster. This is mainly used to prevent machines in
# one logical cluster from joining another.
cluster_name: 'My CLuster'
现在重新启动服务:
nodetool flush system
sudo systemctl restart cassandra
验证是否进行了更改:
cqlsh
进入shell后,使用下面的命令检查集群名称:
DESC CLUSTER
样本输出:
7.3、启用用户身份验证
我们将首先对可用文件进行备份,然后再对其进行编辑:
sudo cp /etc/cassandra/conf/cassandra.yaml /etc/cassandra/conf/cassandra.yaml.backup
现在打开文件:
sudo vi /etc/cassandra/conf/cassandra.yaml
要启用用户身份验证,请进行以下更改:
authenticator: org.apache.cassandra.auth.PasswordAuthenticator
authorizer: org.apache.cassandra.auth.CassandraAuthorizer
roles_validity_in_ms: 0
permissions_validity_in_ms: 0
保存文件并重新启动Cassandra:
sudo systemctl restart cassandra
7.4、为数据库创建管理员用户
首先使用默认用户凭据登录shell,如下所示:
cqlsh -u cassandra -p cassandra
现在使用以下命令创建一个用户,并适当替换:
CREATE ROLE user1 WITH PASSWORD = 'Passw0rd' AND SUPERUSER = true AND LOGIN = true;
记住用首选用户凭据替换user1和Passw0rd。创建后,退出shell:
exit;
现在尝试使用创建的用户登录:
cqlsh -u user1 -p Passw0rd
样本输出:
一旦进入shell,就可以禁用默认超级用户权限:
ALTER ROLE cassandra WITH PASSWORD = 'cassandra' AND SUPERUSER = false AND LOGIN = false;
现在向创建的用户授予所有权限:
GRANT ALL PERMISSIONS ON ALL KEYSPACES TO 'user1';
exit;
7.5、远程访问Apache Cassandra
默认情况下,Apache Cassandra设置为侦听本地主机。但是,您可以通过如下方式调整配置文件,将其配置为远程访问:
sudo vi /etc/cassandra/default.conf/cassandra.yaml
在文件中,进行以下更改:
# For security reasons, you should not expose this port to the internet. Firewall it if needed.
rpc_address: 192.168.205.3
保存文件并重新启动Cassandra:
sudo systemctl restart cassandra
验证服务是否正在侦听设置的IP地址:
$ sudo ss -plunt|grep 9042
tcp LISTEN 0 128 192.168.205.3:9042 0.0.0.0:* users:(("java",pid=39432,fd=261))
允许端口通过防火墙:
sudo firewall-cmd --permanent --add-port=9042/tcp
sudo firewall-cmd --reload
现在在安装了cqlsh的远程系统上测试连接:
cqlsh -u user1 192.168.205.3
样本输出:
至此,在Alma Linux 8、Oracle Linux 8上安装和配置Apache Cassandra完成。此外,我们已将辅助磁盘配置为Apache Cassandra数据存储,并启用了远程访问。现在,您可以继续对Cassandra执行水平缩放。