| 标签 | 说明 |
|---|---|
| latest | MigratoryData服务器最新版本镜像 |
<version> | 指定版本的MigratoryData服务器镜像(如6.0.22) |
MigratoryData Server是一款高可扩展的消息服务器,专为支持数百万用户的实时Web和移动应用设计并使用。该Docker镜像提供了MigratoryData Server的容器化部署方案,简化了服务器的安装、配置和扩展流程。
更多关于MigratoryData Server的信息,请访问[***]
!logo
要启动单个MigratoryData实例并允许客户端通过8800端口连接,请先安装Docker,然后运行以下命令:
console$ docker pull migratorydata/server:latest $ docker run -d --name my_migratorydata -p 8800:8800 migratorydata/server:latest
现在,您可以通过http://yourhostname:8800访问并运行MigratoryData服务器提供的演示应用(yourhostname是安装该实例的机器的DNS名称或IP地址,需确保客户端可解析和访问)。
查看容器日志:
console$ docker logs my_migratorydata
停止并删除容器:
console$ docker stop my_migratorydata $ docker rm my_migratorydata
可通过以下方式自定义Docker容器中运行的MigratoryData服务器的各个方面。
MIGRATORYDATA_EXTRA_OPTS
通过设置MIGRATORYDATA_EXTRA_OPTS环境变量,可定义或覆盖默认配置文件中的参数,语法如下:
console-Dparameter=value
注意:参数和值均无需使用单引号或双引号,且值中不允许包含空格。完整参数列表请参见MigratoryData配置指南。
Java选项
三个环境变量用于自定义Java选项:
MIGRATORYDATA_JAVA_GC_LOG_OPTS: 垃圾回收日志选项MIGRATORYDATA_JAVA_GC_OPTS: 垃圾收集器配置MIGRATORYDATA_JAVA_EXTRA_OPTS: 其他Java选项这些选项均有默认值,适用于大多数场景,通常无需额外配置。
添加许可证密钥
要使用许可证密钥,通过额外选项覆盖默认配置文件中的LicenseKey参数:
console$ docker run --platform linux/amd64 -d -e MIGRATORYDATA_EXTRA_OPTS='-DLicenseKey=yourlicensekey' \ --name my_migratorydata -p 8800:8800 migratorydata/server:latest
其中yourlicensekey是从MigratoryData获取的评估、测试或生产许可证密钥。
启用JMX监控
要启用JMX监控,需定义JMX相关参数并将JMX端口映射到主机:
console$ docker run --platform linux/amd64 -d \ -e MIGRATORYDATA_EXTRA_OPTS='-DLicenseKey=yourlicensekey -DMonitor=JMX -DMonitorUsername=admin -DMonitorPassword=pass \ -DMonitorJMX.Listen=*:3000 -DMonitorJMX.Authentication=true -DMonitorJMX.Encryption=false' \ --name my_migratorydata -p 8800:8800 -p 3000:3000 migratorydata/server:latest
现在,您可以使用JMX客户端通过yourhostname:3000连接,凭据为admin/pass。若使用Java的jconsole,需通过MIGRATORYDATA_JAVA_EXTRA_OPTS添加额外Java选项:
console$ docker run --platform linux/amd64 -d \ -e MIGRATORYDATA_EXTRA_OPTS='-DLicenseKey=yourlicensekey -DMonitor=JMX -DMonitorUsername=admin -DMonitorPassword=pass \ -DMonitorJMX.Listen=*:3000 -DMonitorJMX.Authentication=true -DMonitorJMX.Encryption=false' \ -e MIGRATORYDATA_JAVA_EXTRA_OPTS='-Djava.net.preferIPv4Stack=true -Djava.rmi.server.hostname=yourhostname' \ --name my_migratorydata -p 8800:8800 -p 3000:3000 migratorydata/server:latest
日志配置
除了可通过docker logs my_migratorydata查看的标准输出日志外,镜像还将日志写入默认路径/migratorydata/logs。可通过以下方式修改日志路径:
console$ docker run --platform linux/amd64 -d -e MIGRATORYDATA_EXTRA_OPTS='-DLicenseKey=yourlicensekey \ -DLogFolder=/myvolume/migratorydata/logs' -p 8800:8800 migratorydata/server:latest
要记录访问日志,使用-DAccessLog=true参数:
console$ docker run --platform linux/amd64 -d -e MIGRATORYDATA_EXTRA_OPTS='-DLicenseKey=yourlicensekey \ -DLogFolder=/myvolume/migratorydata/logs \ -DAccessLog=true' -p 8800:8800 migratorydata/server:latest
部署扩展
要部署一个或多个MigratoryData服务器扩展,需将包含扩展的卷挂载到标准扩展目录/migratorydata/extensions。
例如,假设您开发了一个权限扩展extension.jar并部署到持久化目录/myvolume/migratorydata/extensions,运行以下命令加载该扩展:
console$ docker run --platform linux/amd64 -d -e MIGRATORYDATA_EXTRA_OPTS='-DLicenseKey=yourlicensekey -DEntitlement=Custom' \ -v /myvolume/migratorydata/extensions:/migratorydata/extensions \ --name mymigratorydata -p 8800:8800 migratorydata/server:latest
或者,通过构建新镜像部署扩展:
dockerfileFROM migratorydata/server:latest COPY extension.jar /migratorydata/extensions/extension.jar
构建并运行:
console$ docker build -t custom_migratorydata . $ docker run --platform linux/amd64 --name my_custom_migratorydata -d custom_migratorydata
以下示例配置用于在Kubernetes上部署包含三个MigratoryData服务器的集群。
yaml# # 供MigratoryData集群与客户端通信的Service # apiVersion: v1 kind: Service metadata: name: migratorydata-cs # 取消以下两行注释以使用Application Gateway部署集群 #annotations: # service.beta.kubernetes.io/azure-load-balancer-internal: "true" labels: app: migratorydata spec: type: LoadBalancer ports: - name: client-port port: 80 protocol: TCP targetPort: 8800 selector: app: migratorydata --- # # 用于集群内部通信的Headless Service # apiVersion: v1 kind: Service metadata: name: migratorydata-hs labels: app: migratorydata spec: clusterIP: None ports: - name: inter-cluster1 port: 8801 protocol: TCP targetPort: 8801 - name: inter-cluster2 port: 8802 protocol: TCP targetPort: 8802 - name: inter-cluster3 port: 8803 protocol: TCP targetPort: 8803 - name: inter-cluster4 port: 8804 protocol: TCP targetPort: 8804 selector: app: migratorydata --- apiVersion: policy/v1beta1 kind: PodDisruptionBudget metadata: name: migratorydata-pdb spec: minAvailable: 3 # 该值必须大于或等于种子成员数量 🅐 selector: matchLabels: app: migratorydata --- apiVersion: apps/v1 kind: StatefulSet metadata: name: migratorydata spec: selector: matchLabels: app: migratorydata serviceName: migratorydata-hs replicas: 3 # 期望的集群成员数量 🅑 updateStrategy: type: RollingUpdate podManagementPolicy: OrderedReady template: metadata: labels: app: migratorydata spec: affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 1 podAffinityTerm: labelSelector: matchExpressions: - key: "app" operator: In values: - migratorydata topologyKey: "kubernetes.io/hostname" containers: - name: migratorydata-cluster imagePullPolicy: Always image: migratorydata/server:latest env: - name: MIGRATORYDATA_JAVA_EXTRA_OPTS value: "-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap" - name: MIGRATORYDATA_EXTRA_OPTS value: "-DMemory=128MB \ -DClusterDeliveryMode=Guaranteed \ -DLogLevel=INFO \ -DX.ConnectionOffload=true \ -DClusterSeedMemberCount=3" # 定义种子成员数量 🅒 command: - bash - "-c" - | set -x HOST=`hostname -s` DOMAIN=`hostname -d` CLUSTER_PORT=8801 MAX_REPLICAS=5 # 定义集群成员的最大数量 🅓 if [[ $HOST =~ (.*)-([0-9]+)$ ]]; then NAME=${BASH_REMATCH[1]} fi CLUSTER_MEMBER_LISTEN=$HOST.$DOMAIN:$CLUSTER_PORT echo $CLUSTER_MEMBER_LISTEN MIGRATORYDATA_EXTRA_OPTS="$MIGRATORYDATA_EXTRA_OPTS -DClusterMemberListen=$CLUSTER_MEMBER_LISTEN" CLUSTER_MEMBERS="" for (( i=1; i < $MAX_REPLICAS; i++ )) do CLUSTER_MEMBERS="$CLUSTER_MEMBERS$NAME-$((i-1)).$DOMAIN:$CLUSTER_PORT," done CLUSTER_MEMBERS="$CLUSTER_MEMBERS$NAME-$((MAX_REPLICAS-1)).$DOMAIN:$CLUSTER_PORT" echo $CLUSTER_MEMBERS MIGRATORYDATA_EXTRA_OPTS="$MIGRATORYDATA_EXTRA_OPTS -DClusterMembers=$CLUSTER_MEMBERS" echo $MIGRATORYDATA_EXTRA_OPTS export MIGRATORYDATA_EXTRA_OPTS ./start-migratorydata.sh resources: requests: memory: "256Mi" cpu: "0.5" ports: - name: client-port containerPort: 8800 - name: inter-cluster1 containerPort: 8801 - name: inter-cluster2 containerPort: 8802 - name: inter-cluster3 containerPort: 8803 - name: inter-cluster4 containerPort: 8804 readinessProbe: tcpSocket: port: 8800 initialDelaySeconds: 10 periodSeconds: 5 livenessProbe: tcpSocket: port: 8800 initialDelaySeconds: 10 periodSeconds: 5
上述清单包含Headless Service、客户端Service、PodDisruptionBudget和StatefulSet。客户端Service用于处理客户端连接,Headless Service提供集群实例的DNS记录以支持内部通信。
部署集群:
migratorydata-cluster.yamlconsole$ kubectl apply -f migratorydata-cluster.yaml
验证部署:
console$ kubectl get pods NAME READY STATUS RESTARTS AGE migratorydata-0 1/1 Running 0 2m52s migratorydata-1 1/1 Running 0 2m40s migratorydata-2 1/1 Running 0 2m25s
console$ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 37m migratorydata-cs LoadBalancer 10.0.58.189 YourExternalIP 80:31596/TCP 4m8s migratorydata-hs ClusterIP None <none> 8801/TCP,8802/TCP,8803/TCP,8804/TCP 4m7s
现在,您可以通过http://YourExternalIP访问集群中每个MigratoryData服务器提供的演示应用(YourExternalIP是Kubernetes分配给客户端Service的外部IP,可通过kubectl get svc获取)。
在阅读本节前,建议先了解MigratoryData的集群功能。
上述示例YAML中,通过shell变量MAX_REPLICAS🅓定义了集群最大成员数为5,但replicas字段🅑仅创建了3个成员,满足minAvailable字段🅐的最小要求。同时,通过ClusterSeedMemberCount参数🅒配置了3个种子节点,满足minAvailable值大于或等于种子成员数的要求。
可根据系统负载手动或自动添加/移除集群成员(最多5个)。
手动扩展
通过修改replicas字段🅑扩展集群(最多5个成员):
console$ kubectl scale statefulsets migratorydata --replicas=5
负载降低时减少成员:
console$ kubectl scale statefulsets migratorydata --replicas=4
注意:replicas值不能大于MAX_REPLICAS🅓,也不能小于minAvailable🅐。
自动扩展
若系统负载变化较快,可使用Kubernetes的自动扩展功能。Kubernetes可监控CPU使用率并自动调整replicas值。
例如,当CPU使用率超过50%时扩展至最多5个成员,低于50%时缩减至最少3个成员:
console$ kubectl autoscale statefulset migratorydata --cpu-percent=50 --min=3 --max=5
或使用YAML清单:
yamlapiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: name: migratorydata-autoscale spec: maxReplicas: 5 minRe
以下是 migratorydata/server 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。




探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务