绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
hazelcast集群配置_使用EC2配置hazelcast
2022-05-23 14:24:40

hazelcast集群配置

当涉及到基于JVM的应用程序时,Hazelcast是一个很好的缓存工具。 如果您使用Amazon Web Services,则Hazelcast可以完美集成。

项任务是创建负责描述实例的策略。 我们将此策略命名为describe-instances-policy。

  1. {
  2. "Version": "2012-10-17",
  3. "Statement": [
  4. {
  5. "Sid": "Stmt1467219263000",
  6. "Effect": "Allow",
  7. "Action": [
  8. "ec2:DescribeInstances"
  9. ],
  10. "Resource": [
  11. "*"
  12. ]
  13. }
  14. ]
  15. }

必须访问亚马逊资源的应用程序应该使用用户或具有对我们需要的资源附加策略的角色。 在应用程序中使用亚马逊用户是一个坏习惯,这成为管理密钥的麻烦,更不用说安全性问题了。 因此,我们将重点介绍使用IAM角色进行的hazelcast配置。

我们的角色将称为my-ec2-role,并将附加政策describe-instances-policy。

通过这样做,具有hazelcast的ec2实例将能够检索其他ec2实例的私有ip,因此将尝试确定哪些实例有资格建立分布式缓存。

现在我们可以进行hazelcast配置。 我们可以基于Java的配置或基于xml的配置。

让我们从xml配置开始。

  1. <hazelcast
  2. xsi:schemaLocation="https://hazelcast.com/schema/config https://hazelcast.com/schema/config/hazelcast-config-3.7.xsd"
  3. xmlns="http://www.hazelcast.com/schema/config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  4. <group>
  5. <field>ec2-group</field>
  6. <password>ec2-password</password>
  7. </group>
  8. <network>
  9. <join>
  10. <multicast enabled="false">
  11. </multicast>
  12. <tcp-ip enabled="false">
  13. </tcp-ip>
  14. <aws enabled="true">
  15. <!--optional, default is us-east-1 -->
  16. <region>eu-west-1</region>
  17. <iam-role>my-ec2-role</iam-role>
  18. <!-- optional, only instances belonging to this group will be discovered, default will try all running instances -->
  19. <security-group-field></security-group-field>
  20. <tag-key></tag-key>
  21. <tag-value></tag-value>
  22. </aws>
  23. </join>
  24. </network>
  25. </hazelcast>

和主类一起加载xml文件。

  1. package com.gkatzioura.hazelcastec2;
  2. import com.hazelcast.config.*;
  3. import com.hazelcast.core.Hazelcast;
  4. /**
  5. * Created by gkatzioura on 7/26/16.
  6. */
  7. public class HazelCastXMLExample {
  8. public static void main(String args[]) {
  9. Config config = new ClasspathXmlConfig("hazelcast.xml");
  10. Hazelcast.newHazelcastInstance(config);
  11. }
  12. }

要特别注意应禁用多播和tcp-ip。 由于我们指定了IAM角色,因此无需提供凭据。 Tag-key和Tag-value表示可以在ec2机器上添加的标签。 如果您指定标签键和值,则仅在具有相同标签和值的机器上建立连接。

您可以将安全组字段为空。 Hazelcast使用此信息进行实例过滤,但是您必须确保ec2实例使用的安全组具有打开的入站和出站流量端口5701、5702和5703。

Java配置遵循相同的规则。

  1. package com.gkatzioura.hazelcastec2;
  2. import com.hazelcast.aws.AWSClient;
  3. import com.hazelcast.config.AwsConfig;
  4. import com.hazelcast.config.Config;
  5. import com.hazelcast.config.GroupConfig;
  6. import com.hazelcast.config.JoinConfig;
  7. import com.hazelcast.core.Hazelcast;
  8. import com.hazelcast.core.HazelcastInstance;
  9. /**
  10. * Created by gkatzioura on 7/25/16.
  11. */
  12. public class HazelCastJavaExample {
  13. public static void main(String args[]) {
  14. Config config = new Config();
  15. GroupConfig groupConfig = new GroupConfig();
  16. groupConfig.setName("ec2-group");
  17. groupConfig.setPassword("ec2-password");
  18. config.setGroupConfig(groupConfig);
  19. JoinConfig joinConfig = config.getNetworkConfig().getJoin();
  20. joinConfig.getTcpIpConfig().setEnabled(false);
  21. joinConfig.getMulticastConfig().setEnabled(false);
  22. AwsConfig awsConfig = joinConfig.getAwsConfig();
  23. awsConfig.setIamRole("my-ec2-role");
  24. awsConfig.setEnabled(true);
  25. awsConfig.setRegion("eu-west-1");
  26. Hazelcast.newHazelcastInstance(config);
  27. }
  28. }

将您的hazelcast应用上传到ec2并运行它们后,您会看到以下日志

  1. Jul 26, 2016 6:34:50 PM com.hazelcast.cluster.ClusterService
  2. INFO: [172.31.33.104]:5701 [dev] [3.5.4]
  3. Members [2] {
  4. Member [172.31.33.104]:5701 this
  5. Member [172.31.41.154]:5701
  6. }

我已经添加了gradle文件,以便使用xml或java配置进行一些快速测试。

  1. group 'com.gkatzioura'
  2. version '1.0-SNAPSHOT'
  3. apply plugin: 'java'
  4. sourceCompatibility = 1.5
  5. repositories {
  6. mavenCentral()
  7. }
  8. apply plugin: 'idea'
  9. dependencies {
  10. testCompile group: 'junit', name: 'junit', version: '4.11'
  11. compile group: 'com.hazelcast', name:'hazelcast-cloud', version:'3.5.4'
  12. }
  13. task javaConfJar(type: Jar) {
  14. manifest {
  15. attributes 'Main-Class': 'com.gkatzioura.hazelcastec2.HazelCastJavaExample'
  16. }
  17. baseName = project.name + '-jconf'
  18. from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
  19. with jar
  20. }
  21. task javaXMLJar(type: Jar) {
  22. manifest {
  23. attributes 'Main-Class': 'com.gkatzioura.hazelcastec2.HazelCastXMLExample'
  24. }
  25. baseName = project.name + '-xmlconf'
  26. from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
  27. with jar
  28. }

您可以在github上找到源代码。

翻译自: https://www.javacodegeeks.com/2016/07/configure-hazelcast-ec2.html

分享好友

分享这个小栈给你的朋友们,一起进步吧。

Hazelcast
创建时间:2022-04-18 14:01:59
Hazelcast
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 飘絮絮絮丶
    专家
戳我,来吐槽~