| Access Distinct Clusters |
| ======================== |
| |
| ServiceCenter Aggregate Architecture |
| ------------------------------------ |
| |
| In the `Multiple Datacenters`_ article, we introduce the aggregation |
| architecture of service center. In fact, this aggregation architecture |
| of service center can be applied not only to the scene deployed in |
| multiple datacenters, but also to the scene services data aggregation in |
| multiple kubernetes clusters. |
| |
| .. figure:: kubeclusters.PNG |
| :alt: architecture |
| |
| architecture |
| |
| The service centers deployed in distinct kubernetes clusters can |
| communicate with each other, sync the services data from other |
| kubernetes clusters. Applications can discover services from different |
| the kubernetes cluster through using the service center HTTP API. **It |
| solve the problem of isolation between kubernetes clusters**. |
| |
| Quick Start |
| ----------- |
| |
| Let’s assume you want to install 2 clusters of Service-Center in |
| different Kubernetes clusters with following details. |
| |
| ======= ========== ========= ========= |
| Cluster Kubernetes namespace Node |
| ======= ========== ========= ========= |
| sc1 k1 default 10.12.0.1 |
| sc2 k2 default 10.12.0.2 |
| ======= ========== ========= ========= |
| |
| To facilitate deployment, we will publish the service address of the |
| service center in [``NodePort``] mode. |
| |
| Deploy the Service Center |
| ''''''''''''''''''''''''' |
| |
| Using helm to deploy the service center to kubernetes here, the |
| instructions for specific ``values`` can be referred to `here`_. |
| |
| Take deployment to kubernetes cluster 1 as an example. |
| |
| .. code:: bash |
| |
| # login the k1 kubernetes master node to deploy sc1 |
| git clone git@github.com:apache/servicecomb-service-center.git |
| cd examples/infrastructures/k8s |
| helm install --name k1 \ |
| --set sc.discovery.clusters="sc2=http://10.12.0.2:30100" \ |
| --set sc.discovery.aggregate="k8s\,servicecenter" \ |
| --set sc.registry.type="buildin" \ |
| --set sc.service.type=NodePort \ |
| service-center/ |
| |
| Notes: To deploy Service Center in kuberbetes cluster 2, you can repeat |
| the above steps and just change the ``sc.discovery.clusters`` value to |
| ``sc1=http://10.12.0.1:30100``. |
| |
| Start Server |
| '''''''''''' |
| |
| Edit the configuration of the ip/port on which Server will register. |
| |
| :: |
| |
| vi examples/discovery/server/conf/chassis.yaml |
| |
| Replace the below values |
| |
| .. code:: yaml |
| |
| cse: |
| service: |
| registry: |
| type: servicecenter |
| address: http://10.12.0.2:30100 # the address of SC in dc-2 |
| |
| Run the Server |
| |
| .. code:: bash |
| |
| go run examples/discovery/server/main.go |
| |
| Start Client |
| '''''''''''' |
| |
| Edit the configuration of the ip/port on which Client will register and |
| discover. |
| |
| .. code:: bash |
| |
| vi examples/discovery/client/conf/chassis.yaml |
| |
| Replace the below values |
| |
| .. code:: yaml |
| |
| cse: |
| service: |
| registry: |
| registrator: |
| type: servicecenter |
| address: http://10.12.0.1:30100 # the address of SC in dc-1 |
| serviceDiscovery: |
| type: servicecenter |
| address: http://10.12.0.3:30100 # the address of SC Aggregate |
| |
| Run the Client |
| |
| .. code:: bash |
| |
| go run examples/discovery/client/main.go |
| |
| Confirm the multiple datacenters discovery is OK |
| '''''''''''''''''''''''''''''''''''''''''''''''' |
| |
| Since client is not a service, we check its running log. |
| |
| :: |
| |
| 2018-09-29 10:30:25.556 +08:00 INFO registry/bootstrap.go:69 Register [Client] success |
| ... |
| 2018-09-29 10:30:25.566 +08:00 WARN servicecenter/servicecenter.go:324 55c783c5c38e11e8951f0a58ac00011d Get instances from remote, key: default Server |
| 2018-09-29 10:30:25.566 +08:00 INFO client/client_manager.go:86 Create client for highway:Server:127.0.0.1:8082 |
| ... |
| 2018/09/29 10:30:25 AddEmploy ------------------------------ employList:<name:"One" phone:"15989351111" > |
| |
| |
| .. _Multiple Datacenters: https://service-center.readthedocs.io/en/latest/dev-guides/multidcs.html |
| .. _here: https://github.com/apache/servicecomb-service-center/tree/master/scctl/examples/infrastructures/k8s |