如何安装部署Infinispan服务节点?

数据库

1 基础知识

1.1 软件简介

– Infinispan是一款开源内存数据库
– Infinispan几乎可以存储任何类型的数据(纯文本到结构化对象)
– Infinispan支持全文和向量搜索功能(拥有闪电般的检索速度)
– Infinispan通过将数据分布到弹性扩展的集群中,可保证高可用和数据完整
– Infinispan支持多个地理位置之间复制数据的能力。
– Infinispan支持原生高性能协议或Redis或Memcached客户端连接到infinispan

1.2 软件的特点

– 互操作性,跨多种协议和编程语言访问数据
– 弹性和容错数据,确保数据始终可用以满足繁重的工作负载
– ACID事务,保证数据始终有效且一致
– 集群处理,实时处理数据,不正价资源和负担
– 查询,在分布式数据集上执行简单、准确、快速的搜索

1.3 软件的优越性

1.3.1 提升应用程序性能

– Infinispan通过将数据存储在更接近处理逻辑的位置来增强应用程序的性能,从而减少延迟和提高吞吐量
– Infinispan作为Java库,支持添加到应用程序的依赖项目中,然后将数据存储在与执行代码相同的内存空间
– Infinispan支持作为独立的数据据层运行,可实现内存级性能和远程数据访问。
– Infinispan通过一致性哈希技术,客户端之需要通过网络跃点即可访问数据
– Infinispan支持通过HTTP或Hot Rod自定义二进制TCP协议发出请求

1.3.2 高可用性和弹性

– Infinispan提供值得信赖的开源技术,实现可扩展性,满足工作负载需求比ing降低资源利用率。
– Infinispan将数据分布在多个集群,确保单点故障不会造成数据丢失。
– Infinispan常见用途是作为状态数据库(例如用户的HTTP会话)的共享存储。
– Infinispan通过将会话外部花到充当独立数据层的Infinispan集群,应用可保持轻量级并避免堆占用。

1.3.3 跨数据中心备份

– Infinispan支持跨站点复制保持数据一致性
– Infinispan客户端使用异步复制不同位置进行写入也能保证数据的一致性

1.4 部署要求

– Java 17 JDK或更高版本
– Maven 3.8或更高版本(与Gradle或Ivy兼容)

2 最佳实践

2.1 部署环境

2.1.1 部署OpenJDK

如何部署openJDK?


部署完成后,当前环境执行以下测试命令,

java -version

可见如下显示,

openjdk version "21.0.1" 2023-10-17
OpenJDK Runtime Environment (build 21.0.1+12-29)
OpenJDK 64-Bit Server VM (build 21.0.1+12-29, mixed mode, sharing)

2.1.2 部署Maven(可选)

如何二进制部署maven?


部署完成后,当前环境执行以下测试命令,

mvn -v

可见如下显示,

Apache Maven 3.9.11 (3e54c93a704957b63ee3494413a2b544fd3d825b)
Maven home: /opt/apache-maven-3.9.11
Java version: 21.0.1, vendor: Oracle Corporation, runtime: /usr/java/jdk-21.0.1
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.14.0-70.22.1.el9_0.x86_64", arch: "amd64", family: "unix"

2.1.3 下载并解压软件包

cd ~
wget --no-check-certificate http://github.com/infinispan/infinispan/releases/download/15.2.5.Final/infinispan-server-15.2.5.Final.zip
unzip infinispan-server-15.2.5.Final.zip

另外,以上只是演示,如果不能下载或者需要其他版本,请从如下连接下载,
https://infinispan.org/download/

2.2 部署Infinispan

2.2.1 创建运行用户

groupadd  -g 987 infinispan
useradd -u 987 -g 987 -d /var/lib/infinispan -s /sbin/nologin infinispan

2.2.2 部署软件包

cd ~
mv infinispan-server-15.2.5.Final /opt/
mkdir -p /data/infinispan /var/log/infinispan
ln -s /data/infinispan /opt/infinispan-server-15.2.5.Final/server/data
rm -rf /opt/infinispan-server-15.2.5.Final/server/log
ln -s /var/log/infinispan /opt/infinispan-server-15.2.5.Final/server/log 
ln -s /opt/infinispan-server-15.2.5.Final/server/conf /etc/infinispan

根据应用执行用户的要求,你需要修改如下目录的权限,

chown infinispan:infinispan -R /data/infinispan /var/log/infinispan
chmod 770 -R /data/infinispan /var/log/infinispan

然后,你需要使用如下命令设置环境变量,

vim /etc/profile.d/infinispan-server.sh

加入如下配置,

export ISPN_HOME=/opt/infinispan-server-15.2.5.Final
export PATH=${ISPN_HOME}/bin:$PATH

配置创建,我们需要使用如下命令导入环境变量,

source /etc/profile

另外,也可以使用如下命令快速配置,

echo 'export ISPN_HOME=/opt/infinispan-server-15.2.5.Final' > /etc/profile.d/infinispan-server.sh
echo 'export PATH=${ISPN_HOME}/bin:$PATH' >> /etc/profile.d/infinispan-server.sh
source /etc/profile

2.2.3 修改配置文件

cp /opt/infinispan-server-15.2.5.Final/bin/server.conf /opt/infinispan-server-15.2.5.Final/bin/server.conf.default
vim /opt/infinispan-server-15.2.5.Final/bin/server.conf

修改如下配置,

JAVA_HOME="/usr/java/jdk-21.0.1"
JAVA="/usr/java/jdk-21.0.1/bin/java"
JAVA_OPTS="-Xms64m -Xmx1024m -XX:MetaspaceSize=64M -Djava.net.preferIPv4Stack=true"

上面定义的是Java虚拟机相关的参数,你还需要使用如下命令定义infinispan服务的倾听地址,

cp /etc/infinispan/infinispan.xml /etc/infinispan/infinispan.xml.default
vim /etc/infinispan/infinispan.xml

修改如下配置,

<infinispan>
   #...
   <server xmlns="urn:infinispan:server:15.2">
      <interfaces>
         <interface name="public">
            <inet-address value="${infinispan.bind.address:0.0.0.0}"/>
         </interface>
      </interfaces>
   #...
   </server>
</infinispan>

然后,使用如下命令创建infinispan的用户和用户所属的组,

cp /etc/infinispan/users.properties /etc/infinispan/users.properties.default
cp /etc/infinispan/groups.properties /etc/infinispan/groups.properties.default
echo 'admin=adminpwd' >> /etc/infinispan/users.properties
echo 'admin=admin' >> /etc/infinispan/groups.properties

2.2.4 测试应用运行

sudo -u infinispan bash -c '/opt/infinispan-server-15.2.5.Final/bin/server.sh'

如何看到如下信息,则服务能正常启动,

2025-07-24 03:16:29,951 INFO  [o.i.SERVER] ISPN080004: Connector SinglePort (default) listening on 0.0.0.0:11222
2025-07-24 03:16:29,951 INFO  [o.i.SERVER] ISPN080034: Server 'dn2infinispan01-121' listening on http://0.0.0.0:11222
2025-07-24 03:16:30,052 INFO  [o.i.SERVER] ISPN080001: Infinispan Server 15.2.5.Final started in 7242ms

如果使用如下命令查看启动端口,

ss -antp | grep java

可见如下显示,

LISTEN 0      4096         0.0.0.0:11222      0.0.0.0:*     users:(("java",pid=51813,fd=226))                      
LISTEN 0      50       10.168.0.83:7800       0.0.0.0:*     users:(("java",pid=51813,fd=209))                      
LISTEN 0      50           0.0.0.0:57800      0.0.0.0:*     users:(("java",pid=51813,fd=212))  

结合业务的需求,你需要使用如下命令开放业务端口,

firewall-cmd --permanent --add-port 11222/tcp
firewall-cmd --reload
firewall-cmd --list-all

2.2.5 创建服务控制脚本

vim /etc/systemd/system/infinispan.service

加入如下配置,

[Unit]
Description=Infinispan Server
Requires=network.target
After=syslog.target network.target

[Service]
Type=simple
User=infinispan
Group=infinispan
WorkingDirectory=/opt/infinispan-server-15.2.5.Final
ExecStart=/usr/bin/bash -c '/opt/infinispan-server-15.2.5.Final/bin/server.sh'
Restart=on-failure
StandardOutput=journal
LimitNOFILE=102642

[Install]
WantedBy=multi-user.target

配置创建后,你需要使用如下命令重载服务使配置生效,

systemctl daemon-reload

测试服务启动并设置自动运行,

systemctl start keycloak.service
systemctl enable keycloak.service

如果遇到启动异常,请使用如下命令查看日志,

tail -f /var/log/infinispan/server.log
journalctl -u infinispan.service -b

2.3 测试Infinispan

2.3.1 登陆服务控制台

http://10.168.0.83:11222
Admin: admin
Password: adminpwd
输入用户名密码后,单击【Open the console】即可进入控制台

2.3.2 测试缓存数据的创建

如何测试Infinispan创建数据?

2.3.3 测试命令行客户端

cli.sh -v

可见如下显示,

Infinispan CLI 15.2.5.Final
Copyright (C) Red Hat Inc. and/or its affiliates and other contributors
License Apache License, v. 2.0. http://www.apache.org/licenses/LICENSE-2.0

另外,该命令行客户端如需在非服务端安装部署请参阅如下章节,

如何安装Infinispan命令行客户端?

参阅文档
==================
官方首页
———-
https://infinispan.org/
https://github.com/infinispan

官方文档
———-
https://infinispan.org/documentation/

服务器的安装
————
https://infinispan.org/docs/stable/titles/server/server.html#server-getting-started

部署教程
———-
https://infinispan.org/docs/15.2.x/titles/getting_started/getting_started.html

容器部署教程
———–
https://infinispan.org/get-started/

下载软包
————
https://infinispan.org/download/

没有评论

发表回复

数据库
如何部署Hot Rod C++客户端?

1 基础知识 1.1 Hot Rod Java客户端简介 – Hot Rod是一种二进制 …

数据库
如何安装Infinispan命令行客户端?

1 前言 一个问题,一篇文章,一出故事。 笔者完成Infinispan单节点部署,本章将Infini …

数据库
如何测试Infinispan创建数据?

1 前言 一个问题,一篇文章,一出故事。 笔者完成Infinispan单节点部署,本章将测试缓存数据 …