云中发现|点燃文档

点燃2023年峰会-按需观看-立即注册!

编辑

云中发现

云平台上的节点发现通常被证明是具有挑战性,因为大多数虚拟环境都会受到以下限制:

  • 禁用多播;

  • 每次启动新映像时,TCP地址都会更改。

虽然您可以在缺少多播,你仍然需要处理不断变化的IP地址。这会造成严重不便,并使配置基于静态IP在这样的环境中几乎不可用。

为了缓解不断变化的IP地址问题,Ignite支持许多设计用于云中工作的IP查找器:

  • Apache jclouds IP查找器

  • Amazon S3 IP查找器

  • 亚马逊ELB IP查找器

  • 谷歌云存储IP查找器

  • Azure Blob存储IP查找程序

提示
基于云的IP Finder允许您一次性创建配置并将其重新用于所有实例。

Apache jclouds IP查找器

为了缓解不断变化的IP地址问题,Ignite通过以下方式利用Apache jclouds多云工具包支持自动节点发现TcpDiscoveryCloudIpFinder.有关Apache jclouds的信息,请参阅jclouds.apache.org.

IP查找器通过获取云上运行的所有虚拟机的私有和公共IP地址并向其添加端口号来形成节点地址。端口是用以下任一项设置的端口TcpDiscoverySpi.setLocalPort(int)Tcp发现Spi。DFLT_端口.这样,所有节点都可以尝试连接到任何形成的IP地址,并启动自动网格节点发现。

请参阅Apache jclouds提供程序部分以获取支持的云平台列表。

注意安全
所有虚拟机必须在同一端口上启动Ignite实例,否则它们将无法使用此IP查找程序发现彼此。

以下是如何配置基于Apache jclouds的IP查找程序的示例:

<豆类 类=“org.apache.ignite.conformation.IgniteConfiguration”>
  <属性 姓名=“发现Spi”>
    <豆类 类=“org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi”>
      <属性 姓名=“ipFinder”>
        <豆类 类=“org.apache.ignite.spi.discovery.tcp.ipfinder.cloud.TcpDiscoveryCloudIpFinder”>
            <!--谷歌计算引擎的配置。-->
            <属性 姓名=“提供商” 价值=“谷歌计算机引擎”/>
            <属性 名称=“身份” 价值=“您的服务帐户邮件”/>
            <属性 姓名=“凭证路径” 价值=“路径_YOUR_PEM_FILE”/>
            <属性 姓名=“区域”>
            <列表>
                <值>美国中央1-a</value>
                <值>亚洲东部1-a</value>
            </list>
            </属性>
        </bean>
      </属性>
    </bean>
  </属性>
</bean>
Tcp发现Spi spi公司 = 新的 Tcp发现Spi();

TcpDiscoveryCloudIpFinder ipFinder(ipFinder) = 新的 Tcp发现呼叫查找器();

//AWS EC2的配置。
ipFinder(ipFinder).setProvider(设置提供程序)(“aws-ec2”);
ipFinder(ipFinder).设置标识(“yourAccountId”);
ipFinder(ipFinder).设置凭据(“yourAccountKey”);
ipFinder(ipFinder).设置区域(集合.单一列表(“美国东部-1”));
ipFinder(ipFinder).设置区域(阵列.asList(作为列表)(“美国东部-1b”, “美国东部-1e”));

spi公司.setIpFinder(设置IP查找程序)(ipFinder(ipFinder));

点火配置 cfg(立方英尺/加仑) = 新的 点火配置();

//覆盖默认的发现SPI。
cfg(立方英尺/加仑).setDiscoverySpi(spi公司);

//启动节点。
点火.开始(cfg(立方英尺/加仑));
此API目前不适用于C#/。净利润。您可以使用XML配置。
此API目前不适用于C++。您可以使用XML配置。

Amazon S3 IP查找器

基于亚马逊S3的发现允许Ignite节点在亚马逊S3商店启动时注册其IP地址。这样,其他节点可以尝试连接到S3中存储的任何IP地址,并启动自动节点发现。要使用基于S3的自动节点发现,您需要配置TcpDiscoveryS3IpFinder的类型ipFinder(ipFinder).

重要
您必须下载并启用“点火aws-ext”扩展.

下面是一个如何配置基于Amazon S3的IP查找器的示例:

<豆类 类=“org.apache.ignite.conformation.IgniteConfiguration”>

  <属性 姓名=“发现Spi”>
    <豆类 类=“org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi”>
      <属性 姓名=“ipFinder”>
        <豆类 类=“org.apache.ignite.spi.discovery.tcp.ipfinder.s3.TcpDiscoveryS3IpFinder”>
          <属性 姓名=“awsCredentials” 参考=“aws.creds”/>
          <属性 姓名=“bucketName” 价值=“你的名片名”/>
        </bean>
      </属性>
    </bean>
  </属性>
</bean>

<!--AWS证书。提供您的访问密钥ID和秘密访问密钥。-->
<豆类 身份证=“aws.creds” 类=“com.amazonaws.auth.BasicAWSCredentials”>
  <施工单位 价值=“您的_ACCESS_KEY_ID” />
  <施工单位 价值=“YOUR_SECRET_ACCESS_KEY” />
</bean>
Tcp发现Spi spi公司 = 新的 Tcp发现Spi();

基本AWS凭证 信任状 = 新的 基本AWS凭证(“yourAccessKey”, “您的秘密密钥”);

TcpDiscoveryS3IpFinder ipFinder(ipFinder) = 新的 TcpDiscoveryS3IpFinder();
ipFinder(ipFinder).setAws凭证(信任状);
ipFinder(ipFinder).setBucket名称(“yourBucketName”);

spi公司.setIpFinder(设置IP查找程序)(ipFinder(ipFinder));

点火配置 cfg(立方英尺/加仑) = 新的 点火配置();

//覆盖默认发现SPI。
cfg(立方英尺/加仑).setDiscoverySpi(spi公司);

//启动节点。
点火.开始(cfg(立方英尺/加仑));
此API目前不适用于C#/。净利润。您可以使用XML配置。
此API目前不适用于C++。您可以使用XML配置。

您也可以使用实例配置文件AWS证书提供商。

<豆类 类=“org.apache.ignite.conformation.IgniteConfiguration”>

  <属性 姓名=“发现Spi”>
    <豆类 类=“org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi”>
      <属性 姓名=“ipFinder”>
        <豆类 类=“org.apache.ignite.spi.discovery.tcp.ipfinder.s3.TcpDiscoveryS3IpFinder”>
          <属性 姓名=“awsCredentialsProvider” 参考=“aws.creds”/>
          <属性 名称=“bucketName” 价值=“你的名片名”/>
        </bean>
      </属性>
    </bean>
  </属性>
</bean>

<!--基于实例配置文件的凭据-->
<豆类 标识=“aws.creds” 类=“com.amazonaws.auth.InstanceProfileCredentialsProvider”>
  <施工单位 价值=“假” />
</bean>
Tcp发现Spi spi公司 = 新的 Tcp发现Spi();

AWS凭证提供商 实例配置文件代码 = 新的 InstanceProfileCredentialsProvider();

TcpDiscoveryS3IpFinder ipFinder(ipFinder) = 新的 TcpDiscoveryS3IpFinder();
ipFinder(ipFinder).setAwsCredentialsProvider(实例配置文件红色);
ipFinder(ipFinder).设置BucketName(“yourBucketName”);

spi公司.setIpFinder(设置IP查找程序)(ipFinder(ipFinder));

点火配置 cfg(立方英尺/加仑) = 新的 点火配置();

//覆盖默认发现SPI。
cfg(立方英尺/加仑).setDiscoverySpi(spi公司);

//启动节点。
点火.开始(cfg(立方英尺/加仑));
此API目前不适用于C#/。净利润。您可以使用XML配置。
此API目前不适用于C++。您可以使用XML配置。

基于Amazon ELB的发现

基于AWS ELB的IP查找器不需要节点注册其IP地址。IP查找器自动获取所有节点在ELB下连接,并使用它们连接到集群。收件人使用基于ELB的自动节点发现,您需要配置TcpDiscoveryElbIpFinder的类型ipFinder(ipFinder).

以下是如何配置基于Amazon ELB的IP查找程序的示例:

<豆类 类=“org.apache.ignite.conformation.IgniteConfiguration”>

  <属性 姓名=“发现Spi”>
    <豆类 类=“org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi”>
      <属性 姓名=“ipFinder”>
        <豆类 类=“org.apache.ignite.spi.discovery.tcp.ipfinder.elb.TcpDiscoveryElbIpFinder”>
          <属性 姓名=“credentialsProvider”>
              <豆类 类=“com.amazonaws.auth.AWSStaticCredentialsProvider”>
                  <构造函数参数 参考=“aws.creds”/>
              </bean>
          </属性>
          <属性 姓名=“地区” 价值=“YOUR_ELB_REGION_NAME”/>
          <属性 姓名=“loadBalancerName” 价值=“你的_AWS_ELB_NAME”/>
        </bean>
      </属性>
    </bean>
  </属性>
</bean>

<!--AWS证书。提供您的访问密钥ID和机密访问密钥。-->
<豆类 标识=“aws.creds” 类=“com.amazonaws.auth.BasicAWSCredentials”>
  <构造函数参数 价值=“您的_ACCESS_KEY_ID” />
  <施工单位 价值=“YOUR_SECRET_ACCESS_KEY” />
</bean>
Tcp发现Spi spi公司 = 新的 Tcp发现Spi();

基本AWS凭证 信任状 = 新的 基本AWS凭证(“yourAccessKey”, “您的密钥”);

TcpDiscoveryElbIpFinder ipFinder(ipFinder) = 新的 TcpDiscoveryElbIpFinder();
ipFinder(ipFinder).设置区域(“您的ElbRegion”);
ipFinder(ipFinder).设置负载天平名称(“您的负载平衡器名称”);
ipFinder(ipFinder).设置凭据提供者(新的 AWS静态凭据提供商(信任状));

spi公司.setIpFinder(设置IP查找程序)(ipFinder(ipFinder));

点火配置 cfg(立方英尺/加仑) = 新的 点火配置();

//覆盖默认发现SPI。
cfg(立方英尺/加仑).setDiscoverySpi(spi公司);

//启动节点。
点火.开始(cfg(立方英尺/加仑));
此API目前不适用于C#/。净利润。您可以使用XML配置。
此API目前不适用于C++。您可以使用XML配置。

谷歌计算发现

Ignite支持利用谷歌云存储存储自动发现节点。此机制在中实现TcpDiscoveryGoogleStorageIpFinder.启动时,每个节点在存储器中注册其IP地址,并通过读取存储器来发现其他节点。

重要
要使用TcpDiscoveryGoogleStorageIpFinder,启用点火开关 模块在您的应用程序中。

以下是如何配置基于谷歌云存储的IP查找程序的示例:

<豆类 类=“org.apache.ignite.conformation.IgniteConfiguration”>

  <属性 姓名=“发现Spi”>
    <豆类 类=“org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi”>
      <属性 姓名=“ipFinder”>
        <豆类 类=“org.apache.ignite.spi.discovery.tcp.ipfinder.gce.TcpDiscoveryGoogleStorageIpFinder”>
          <属性 姓名=“项目名称” 价值=“YOUR_GOOGLE_PLATFORM_PROJECT_NAME”/>
          <属性 姓名=“桶名” 价值=“你的名片名”/>
          <属性 姓名=“serviceAccountId” 价值=“您的服务_ACCOUNT_ID”/>
          <属性 姓名=“serviceAccountP12FilePath” 价值=“路径_TO_YOUR_PKCS12_KEY”/>
        </bean>
      </属性>
    </bean>
  </属性>
</bean>
Tcp发现Spi spi公司 = 新的 Tcp发现Spi();

TcpDiscoveryGoogleStorageIpFinder ipFinder(ipFinder) = 新的 TcpDiscovery谷歌存储IpFinder();

ipFinder(ipFinder).设置服务帐户ID(“yourServiceAccountId”);
ipFinder(ipFinder).setServiceAccountP12文件路径(“指向您的P12密钥的路径”);
ipFinder(ipFinder).设置项目名称(“yourGoogleClourPlatform项目名称”);

//Bucket名称在整个谷歌云平台中必须是唯一的。
ipFinder(ipFinder).setBucket名称(“your_bucket_name”);

spi公司.setIpFinder(设置IP查找程序)(ipFinder(ipFinder));

点火配置 cfg(立方英尺/加仑) = 新的 点火配置();

//覆盖默认发现SPI。
cfg(立方英尺/加仑).setDiscoverySpi(spi公司);

//启动节点。
点火.开始(cfg(立方英尺/加仑));
此API目前不可用于C#/。净利润。您可以使用XML配置。
此API目前不适用于C++。您可以使用XML配置。

Azure Blob存储

Ignite通过利用Azure Blob存储支持自动节点发现。此机制在中实现TcpDiscoveryAzureBlobStorageIpFinder.启动时,每个节点在存储器中注册其IP地址,并通过读取存储器来发现其他节点。

重要
要使用TcpDiscoveryAzureBlobStorageIpFinder您必须下载并启用“ignite-azure-xt”扩展.

以下是如何配置基于Azure Blob存储的IP查找程序的示例:

<豆类 类=“org.apache.ignite.conformation.IgniteConfiguration”>

  <属性 姓名=“发现Spi”>
    <豆 类=“org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi”>
      <属性 姓名=“ipFinder”>
        <豆类 类=“org.apache.ignite.spi.discovery.tcp.ipfinder.azure.TcpDiscoveryAzureBlobStoreIpFinder”>
          <属性 姓名=“帐户名称” 价值=“YOUR_AZURE_BLOB_STORAGE_ACCOUNT_NAME”/>
          <属性 姓名=“accountKey” 价值=“您的_AZURE_BLOB_STORAGE_ACCOUNT_KEY”/>
          <属性 姓名=“accountEndpoint” 价值=“YOUR_END_POINT”/>
          <属性 姓名=“容器名称” 价值=“您的容器名称”/>
        </bean>
      </属性>
    </bean>
  </属性>
</bean>
Tcp发现Spi spi公司 = 新的 Tcp发现π();

TcpDiscoveryAzureBlobStorageIpFinder ipFinder(ipFinder) = 新的 TcpDiscoveryGoogleStorageIpFinder();

探测器.设置帐户名称(“yourAccountName”);
探测器.设置帐户密钥(“yourAccountKey”);
探测器.设置帐户终结点(“您的端点”);

探测器.setContainerName(设置容器名称)(“您的容器名称”);

spi公司.setIpFinder(设置IP查找程序)(ipFinder(ipFinder));

点火配置 cfg(立方英尺/加仑) = 新的 点火配置();

//覆盖默认发现SPI。
cfg(立方英尺/加仑).setDiscoverySpi(spi公司);

//启动节点。
点火.开始(cfg(立方英尺/加仑));
此API目前不适用于C#/。净利润。您可以使用XML配置。
此API目前不适用于C++。您可以使用XML配置。