joehuang wrote:
I just pointed out the issues for RPC which is used between API cell and
child cell if we deploy child cells in edge clouds. For this thread is
about massively distributed cloud, so the RPC issues inside current
Nova/Cinder/Neutron are not the main focus(it could be another important
and interesting topic), for example, how to guarantee the reliability
for rpc message:

+1 although I'd like to also discuss this, but so be it, perhaps a different topic :)


     > Cells is a good enhancement for Nova scalability, but there are
    some issues
     > in deployment Cells for massively distributed edge clouds:
     >
     > 1) using RPC for inter-data center communication will bring the
    difficulty
     > in inter-dc troubleshooting and maintenance, and some critical
    issue in
     > operation. No CLI or restful API or other tools to manage a child
    cell
     > directly. If the link between the API cell and child cells is
    broken, then
     > the child cell in the remote edge cloud is unmanageable, no
    matter locally
     > or remotely.
     >
     > 2). The challenge in security management for inter-site RPC
    communication.
     > Please refer to the slides[1] for the challenge 3: Securing
    OpenStack over
     > the Internet, Over 500 pin holes had to be opened in the firewall
    to allow
     > this to work – Includes ports for VNC and SSH for CLIs. Using RPC
    in cells
     > for edge cloud will face same security challenges.
     >
     > 3)only nova supports cells. But not only Nova needs to support
    edge clouds,
     > Neutron, Cinder should be taken into account too. How about
    Neutron to
     > support service function chaining in edge clouds? Using RPC? how
    to address
     > challenges mentioned above? And Cinder?
     >
     > 4). Using RPC to do the production integration for hundreds of
    edge cloud is
     > quite challenge idea, it's basic requirements that these edge
    clouds may
     > be bought from multi-vendor, hardware/software or both.
     > That means using cells in production for massively distributed
    edge clouds
     > is quite bad idea. If Cells provide RESTful interface between API
    cell and
     > child cell, it's much more acceptable, but it's still not enough,
    similar
     > in Cinder, Neutron. Or just deploy lightweight OpenStack instance
    in each
     > edge cloud, for example, one rack. The question is how to manage
    the large
     > number of OpenStack instance and provision service.
     >
     >
    
[1]https://www.openstack.org/assets/presentation-media/OpenStack-2016-Austin-D-NFV-vM.pdf


That's also my suggestion to collect all candidate proposals, and
discuss these proposals and compare their cons. and pros. in the
Barcelona summit.

I propose to use Nova/Cinder/Neutron restful API for inter-site
communication for edge clouds, and provide Nova/Cinder/Neutron API as
the umbrella for all edge clouds. This is the pattern of Tricircle:
https://github.com/openstack/tricircle/


What is the REST API for tricircle?

When looking at the github I see:

''Documentation: TBD''

Getting a feel for its REST API would really be helpful in determine how much of a proxy/request router it is vs being an actual API. I don't really want/like a proxy/request router (if that wasn't obvious, ha).

Looking at say:

https://github.com/openstack/tricircle/blob/master/tricircle/nova_apigw/controllers/server.py

That doesn't inspire me so much, since that appears to be more of a fork/join across many different clients, and creating a nova like API out of the joined results of those clients (which feels sort of ummm, wrong). This is where I start to wonder about what the right API is here, and trying to map 1 `create_server` top-level API onto M child calls feels a little off (because that mapping will likely never be correct due to the nature of the child clouds, ie u have to assume a very strict homogenous nature to even get close to this working).

Where there other alternative ways of doing this that were discussed?

Perhaps even a new API that doesn't try to 1:1 map onto child calls, something along the line of make an API that more directly suits what this project is trying to do (vs trying to completely hide that there M child calls being made underneath).

I get the idea of becoming a uber-openstack-API and trying to unify X other other openstacks under that API with this uber-API but it just feels like the wrong way to tackle this.

-Josh

__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to