SlideShare a Scribd company logo
Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or
distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement.
Apache Pulsar
Multi-tenancy and Security
June 17, 2021
Rajan Dhabalia rdhabalia@verizonmedia.com
Ludwig Pummer ludwig@verizonmedia.com
1
Speakers
2
Rajan Dhabalia
Principal Software Engineer, Verizon Media
Ludwig Pummer
Principal Production Engineer, Verizon Media
Agenda
● Pulsar in Yahoo/Verizon Media
● Multi tenancy
● Security
● SNI routing and proxy support
● Future
● QA
3
Pulsar journey in Yahoo
● Developed as a hosted pub-sub service within Yahoo/VMG
○ open-sourced in 2016
● Global deployment
○ 6 DC (Asia, Europe, US)
○ full mesh replication
● Mission critical use cases
○ Serving applications
○ Lower latency bus for use by other low latency services
○ Write availability
4
● Pulsar scale and storage evolution talk
https://pulsar-summit.org/en/event/virtual-conference-2020/sessions/pulsar-storage-on-bookkeepe
r-seamless-evolution
● Pulsar growth since 2015
○ 120+ tenants and 15M rps
○ Storage evolution : HDD, SDD, NVMe, PMEM
○ On-prem, public-cloud and cross org integration
● Scale but what about multi-tenancy?
Scale & Multi-Tenancy
5
6
Secured multi-tenant system with Apache Pulsar
Multi-tenancy & Security Requirement
7
Multi-tenancy
Tenant and Namespace
IO isolation
Quota and Throttling
Broker and Bookie isolation
Anti-affinity group
Security
Authentication & Authorization
Encryption in transit
Encryption at rest
Pulsar proxy
Support ATS, HAProxy, Nginx
Multi-tenancy
8
Tenant
● Highest level of provisioning
● Unit of administration
● Managed by Pulsar
administrators
● Usually one team
9
Tenant and Namespace
Namespace
● Middle level of provisioning
● Unit of data policy
● Managed by Pulsar
administrators and/or Tenants
● Usually one application/use
case
persistent://tenant/namespace/topic
1. Portal find User to Team mapping
2. User creates or modifies tenant
○ Tenant name, Admin Authorization Principals
○ Clusters, WPS & RPS Estimates
○ Jira project, Contact Info, Documentation Link
3. Portal reviews capacity & calls Admin API to manage tenant
○ Jira ticket for Pulsar operator if needed
10
Self-Service Tenant Management
11
IO Isolation
Writer Reader
Journal Data File
Data Device
Journal Device
Write Reads (cold)
Storage Quota
● Tenant-controlled
● Namespace-level and
Topic-level
● Storage Limit
● Policy
Throttling
● Pulsar Administrator-controlled
● Namespace-level
● Publish Rate (broker)
● Dispatch Rate
● Replicator Dispatch Rate
● Max
○ Producers
○ Subscriptions
○ Consumers
○ Unacked Messages
12
Quota & Throttling
Broker Isolation
● Regex of Namespaces to
Regex of Brokers/IP Range
● Primary and Secondary broker
Regexes
13
Broker Isolation
Why
● High Profile/Reserved capacity
● Misbehaving tenants
● Debugging
bin/pulsar-admin ns-isolation-policy set 
--auto-failover-policy-type min_available 
--auto-failover-policy-params min_limit=5,usage_threshold=80 
--namespaces ‘my-tenant/.*’ 
--primary ‘broker-mytenant[0-9]+.mydomain’ --secondary
‘spare[0-9]+.mydomain’ my-cluster policy-name
Bookie Isolation
● Bookies to “Affinity Group”
● Namespace(s) to
Primary/Secondary Affinity
Group
● Rack-Aware within group
14
Bookie Isolation
Why
● SLA
● High Profile/Reserved capacity
bin/pulsar-admin bookies set-bookie-rack -b 1.1.1.1:3181 
-g group-bookie1 --hostname bookie1.mydomain -r /default-rack
...
bin/pulsar-admin namespaces set-bookie-affinity-group 
my-tenant/my-namespace1 --primary-group group-bookie1
● Common unit of failure
for multiple brokers
15
Failure Domain
bin/pulsar-admin clusters 
create-failure-domain 
cluster-name 
--domain-name domain-1 
--broker-list 
broker-1,broker-2
Broker-1
Broker-2
Domain-1
Broker-3
Broker-4
Domain-2
Namespace-1
Namespace-2
Namespace-3
Namespace-4
1
2
3
4
Loadbalancer: Namespace
assignment sequence
Anti-affinity-namespaces: “Namespace-X”
● Assign Namespaces to
Anti-Affinity Group
● Changes Load Balancer
Behavior
16
Anti-affinity group
bin/pulsar-admin namespaces
set-anti-affinity-group
tenant/namespace1 --group
tenant-aag-a
bin/pulsar-admin namespaces
set-anti-affinity-group
tenant/namespace2 --group
tenant-aag-a
Broker-1
Broker-2
Domain-1
Broker-3
Broker-4
Domain-2
Namespace-1
Namespace-2
Namespace-3
Namespace-4
1
2
3
4
Loadbalancer: Namespace
assignment sequence
Anti-affinity-namespaces: “Namespace-X”
Security
17
● Authentication
○ TLS Authentication
○ Athenz
○ Kerberos
○ JSON Web Token Authentication
○ Pluggable authentication provider
● Authorization
○ Pluggable authorization provider
○ Default authorization provider on metadata service
18
Authentication & Authorization
19
Encryption over the wire
PulsarClient client = PulsarClient.builder()
.serviceUrl("pulsar+ssl://pulsar-broler:6651/")
.tlsTrustCertsFilePath("/ca.cert.pem")
.authentication(AUTH, "tlsCertFile:/cert.pem,"+"tlsKeyFile:/key.pem")
.enableTlsHostnameVerification(true)
.build();
Producer creation
Producer producer = pulsarClient.newProducer()
.topic(
"persistent://my-tenant/my-ns/my-topic"
)
.addEncryptionKey("myappkey")
.cryptoKeyReader(new MyCryptoKeyReader())
.create();
20
Encryption at rest
Consumer creation
Consumer consumer = pulsarClient.newConsumer()
.topic(
"persistent://my-tenant/my-ns/my-topic"
)
.subscriptionName(
"my-subscriber-name"
)
.cryptoKeyReader(new MyCryptoKeyReader())
.subscribe();
● Proxy for hybrid could application
● Gateway in a cloud environment or on
Kubernetes
21
Pulsar Proxy: Public cloud access
Proxy Configuration
brokerServiceURLTls=pulsar+ssl://brokers.example.com:6651
brokerWebServiceURLTls=https://brokers.example.com:8443
● Proxy server creates a TLS tunnel between remote client and server
● The goal is to enable external clients to connect to internal services and do their
own client certificate verification, possibly because distribution of private keys to
the edge Traffic Server instances is too difficult or too risky.
22
Support Layer-4 SNI Routing
23
Pulsar client: SNI Routing
PulsarClient client = PulsarClient.builder()
.serviceUrl("pulsar+ssl://pulsar-broker:6651/")
.enableTls(true).tlsTrustCertsFilePath("/ca.cert.pem")
.proxyServiceUrl(proxyUrl, ProxyProtocol.SNI)
.authentication(AUTH, "tlsCertFile:/cert.pem,"+"tlsKeyFile:/key.pem")
.build();
24
Cross Organization geo-replication
pulsar-admin clusters create orgB-cluster 
--broker-url-secure pulsar+ssl:// orgB-broker-vip:6651
 --proxy-protocol SNI 
--proxy-url pulsar+ssl:// orgA-proxy:443
pulsar-admin clusters create orgA-cluster 
--broker-url-secure pulsar+ssl:// orgA-broker-vip:6651
 --proxy-protocol SNI 
--proxy-url pulsar+ssl:// orgB-proxy:443
For more info: PIP-60:
https://github.com/apache/pulsar/wiki/PIP-60%3A-Support-Proxy-server-with-SNI-routing
Future Roadmap
● Tenant based broker virtualization
○ Container based brokers on BookKeeper service
● Hybrid cloud deployment with geo-replication
25
Questions?
26
Thank you
Rajan Dhabalia rdhabalia@verizonmedia.com
Ludwig Pummer ludwig@verizonmedia.com

More Related Content

PDF
Apache Kafka - Martin Podval
PPTX
Autoscaling Flink with Reactive Mode
PDF
Apache Kafka Fundamentals for Architects, Admins and Developers
PDF
Iceberg + Alluxio for Fast Data Analytics
PPTX
Event driven architecture with Kafka
PPTX
Kafka Tutorial - Introduction to Apache Kafka (Part 1)
PDF
Pulsar - Distributed pub/sub platform
PDF
Tutorial - Modern Real Time Streaming Architectures
Apache Kafka - Martin Podval
Autoscaling Flink with Reactive Mode
Apache Kafka Fundamentals for Architects, Admins and Developers
Iceberg + Alluxio for Fast Data Analytics
Event driven architecture with Kafka
Kafka Tutorial - Introduction to Apache Kafka (Part 1)
Pulsar - Distributed pub/sub platform
Tutorial - Modern Real Time Streaming Architectures

What's hot (20)

PDF
From Message to Cluster: A Realworld Introduction to Kafka Capacity Planning
PPTX
APACHE KAFKA / Kafka Connect / Kafka Streams
PPTX
Where is my bottleneck? Performance troubleshooting in Flink
PPTX
The top 3 challenges running multi-tenant Flink at scale
PDF
Fundamentals of Apache Kafka
PDF
Common issues with Apache Kafka® Producer
PPTX
Kafka presentation
PPTX
Kafka 101
PDF
Apache Arrow: High Performance Columnar Data Framework
PDF
Beam + Pulsar: Powerful Stream Processing at Scale - Pulsar Summit SF 2022
PDF
Cloud Storage Comparison: AWS vs Azure vs Google vs IBM
PDF
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...
PDF
Apache Kafka Introduction
PDF
Scaling Apache Pulsar to 10 Petabytes/Day - Pulsar Summit NA 2021 Keynote
PDF
Kafka At Scale in the Cloud
PPTX
PDF
Apache BookKeeper: A High Performance and Low Latency Storage Service
PDF
HTTP Analytics for 6M requests per second using ClickHouse, by Alexander Boc...
PDF
Introduction to apache kafka
From Message to Cluster: A Realworld Introduction to Kafka Capacity Planning
APACHE KAFKA / Kafka Connect / Kafka Streams
Where is my bottleneck? Performance troubleshooting in Flink
The top 3 challenges running multi-tenant Flink at scale
Fundamentals of Apache Kafka
Common issues with Apache Kafka® Producer
Kafka presentation
Kafka 101
Apache Arrow: High Performance Columnar Data Framework
Beam + Pulsar: Powerful Stream Processing at Scale - Pulsar Summit SF 2022
Cloud Storage Comparison: AWS vs Azure vs Google vs IBM
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...
Apache Kafka Introduction
Scaling Apache Pulsar to 10 Petabytes/Day - Pulsar Summit NA 2021 Keynote
Kafka At Scale in the Cloud
Apache BookKeeper: A High Performance and Low Latency Storage Service
HTTP Analytics for 6M requests per second using ClickHouse, by Alexander Boc...
Introduction to apache kafka
Ad

Similar to Security and Multi-Tenancy with Apache Pulsar in Yahoo! (Verizon Media) - Pulsar Summit NA 2021 (20)

PDF
Make Internet Safer with DNS Firewall - Implementation Case Study at a Major ISP
PDF
Make the internet safe with DNS Firewall
PDF
Princeton Dec 2022 Meetup_ NiFi + Flink + Pulsar
PDF
Netflix Open Source Meetup Season 4 Episode 2
PDF
(Current22) Let's Monitor The Conditions at the Conference
PDF
Let’s Monitor Conditions at the Conference With Timothy Spann & David Kjerrum...
PDF
Get your instance by name integration of nova, neutron and designate
PDF
Osacon 2021 hello hydrate! from stream to clickhouse with apache pulsar and...
PDF
Why Spring Belongs In Your Data Stream (From Edge to Multi-Cloud)
PDF
Traefik on Kubernetes at MySocialApp (CNCF Paris Meetup)
PDF
Banog meetup August 30th, network device property as code
PDF
Let's keep it simple and streaming
PDF
Let's keep it simple and streaming.pdf
PDF
Scenic City Summit (2021): Real-Time Streaming in any and all clouds, hybrid...
PPTX
Directory Write Leases in MagFS
PPTX
Open stack HA - Theory to Reality
PDF
NYC Dec 2022 Meetup_ Building Real-Time Requires a Team
PPTX
What’s New in NGINX Plus R16?
PDF
PortoTechHub - Hail Hydrate! From Stream to Lake with Apache Pulsar and Friends
PDF
Gluster for sysadmins
Make Internet Safer with DNS Firewall - Implementation Case Study at a Major ISP
Make the internet safe with DNS Firewall
Princeton Dec 2022 Meetup_ NiFi + Flink + Pulsar
Netflix Open Source Meetup Season 4 Episode 2
(Current22) Let's Monitor The Conditions at the Conference
Let’s Monitor Conditions at the Conference With Timothy Spann & David Kjerrum...
Get your instance by name integration of nova, neutron and designate
Osacon 2021 hello hydrate! from stream to clickhouse with apache pulsar and...
Why Spring Belongs In Your Data Stream (From Edge to Multi-Cloud)
Traefik on Kubernetes at MySocialApp (CNCF Paris Meetup)
Banog meetup August 30th, network device property as code
Let's keep it simple and streaming
Let's keep it simple and streaming.pdf
Scenic City Summit (2021): Real-Time Streaming in any and all clouds, hybrid...
Directory Write Leases in MagFS
Open stack HA - Theory to Reality
NYC Dec 2022 Meetup_ Building Real-Time Requires a Team
What’s New in NGINX Plus R16?
PortoTechHub - Hail Hydrate! From Stream to Lake with Apache Pulsar and Friends
Gluster for sysadmins
Ad

More from StreamNative (20)

PDF
Is Using KoP (Kafka-on-Pulsar) a Good Idea? - Pulsar Summit SF 2022
PDF
Building an Asynchronous Application Framework with Python and Pulsar - Pulsa...
PDF
Blue-green deploys with Pulsar & Envoy in an event-driven microservice ecosys...
PDF
Distributed Database Design Decisions to Support High Performance Event Strea...
PDF
Simplify Pulsar Functions Development with SQL - Pulsar Summit SF 2022
PDF
Towards a ZooKeeper-less Pulsar, etcd, etcd, etcd. - Pulsar Summit SF 2022
PDF
Validating Apache Pulsar’s Behavior under Failure Conditions - Pulsar Summit ...
PDF
Cross the Streams! Creating Streaming Data Pipelines with Apache Flink + Apac...
PDF
Message Redelivery: An Unexpected Journey - Pulsar Summit SF 2022
PDF
Unlocking the Power of Lakehouse Architectures with Apache Pulsar and Apache ...
PDF
Understanding Broker Load Balancing - Pulsar Summit SF 2022
PDF
Building an Asynchronous Application Framework with Python and Pulsar - Pulsa...
PDF
Pulsar's Journey in Yahoo!: On-prem, Cloud and Hybrid - Pulsar Summit SF 2022
PDF
Event-Driven Applications Done Right - Pulsar Summit SF 2022
PDF
Pulsar @ Scale. 200M RPM and 1K instances - Pulsar Summit SF 2022
PDF
Data Democracy: Journey to User-Facing Analytics - Pulsar Summit SF 2022
PDF
Welcome and Opening Remarks - Pulsar Summit SF 2022
PDF
Log System As Backbone – How We Built the World’s Most Advanced Vector Databa...
PDF
MoP(MQTT on Pulsar) - a Powerful Tool for Apache Pulsar in IoT - Pulsar Summi...
PDF
Improvements Made in KoP 2.9.0 - Pulsar Summit Asia 2021
Is Using KoP (Kafka-on-Pulsar) a Good Idea? - Pulsar Summit SF 2022
Building an Asynchronous Application Framework with Python and Pulsar - Pulsa...
Blue-green deploys with Pulsar & Envoy in an event-driven microservice ecosys...
Distributed Database Design Decisions to Support High Performance Event Strea...
Simplify Pulsar Functions Development with SQL - Pulsar Summit SF 2022
Towards a ZooKeeper-less Pulsar, etcd, etcd, etcd. - Pulsar Summit SF 2022
Validating Apache Pulsar’s Behavior under Failure Conditions - Pulsar Summit ...
Cross the Streams! Creating Streaming Data Pipelines with Apache Flink + Apac...
Message Redelivery: An Unexpected Journey - Pulsar Summit SF 2022
Unlocking the Power of Lakehouse Architectures with Apache Pulsar and Apache ...
Understanding Broker Load Balancing - Pulsar Summit SF 2022
Building an Asynchronous Application Framework with Python and Pulsar - Pulsa...
Pulsar's Journey in Yahoo!: On-prem, Cloud and Hybrid - Pulsar Summit SF 2022
Event-Driven Applications Done Right - Pulsar Summit SF 2022
Pulsar @ Scale. 200M RPM and 1K instances - Pulsar Summit SF 2022
Data Democracy: Journey to User-Facing Analytics - Pulsar Summit SF 2022
Welcome and Opening Remarks - Pulsar Summit SF 2022
Log System As Backbone – How We Built the World’s Most Advanced Vector Databa...
MoP(MQTT on Pulsar) - a Powerful Tool for Apache Pulsar in IoT - Pulsar Summi...
Improvements Made in KoP 2.9.0 - Pulsar Summit Asia 2021

Recently uploaded (20)

PPTX
MYSQL Presentation for SQL database connectivity
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
KodekX | Application Modernization Development
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Spectral efficient network and resource selection model in 5G networks
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
MYSQL Presentation for SQL database connectivity
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
KodekX | Application Modernization Development
Chapter 3 Spatial Domain Image Processing.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
The Rise and Fall of 3GPP – Time for a Sabbatical?
The AUB Centre for AI in Media Proposal.docx
Building Integrated photovoltaic BIPV_UPV.pdf
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Diabetes mellitus diagnosis method based random forest with bat algorithm
Per capita expenditure prediction using model stacking based on satellite ima...
Review of recent advances in non-invasive hemoglobin estimation
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Digital-Transformation-Roadmap-for-Companies.pptx
NewMind AI Monthly Chronicles - July 2025
Network Security Unit 5.pdf for BCA BBA.
Spectral efficient network and resource selection model in 5G networks
“AI and Expert System Decision Support & Business Intelligence Systems”

Security and Multi-Tenancy with Apache Pulsar in Yahoo! (Verizon Media) - Pulsar Summit NA 2021

  • 1. Confidential and proprietary materials for authorized Verizon personnel and outside agencies only. Use, disclosure or distribution of this material is not permitted to any unauthorized persons or third parties except by written agreement. Apache Pulsar Multi-tenancy and Security June 17, 2021 Rajan Dhabalia rdhabalia@verizonmedia.com Ludwig Pummer ludwig@verizonmedia.com 1
  • 2. Speakers 2 Rajan Dhabalia Principal Software Engineer, Verizon Media Ludwig Pummer Principal Production Engineer, Verizon Media
  • 3. Agenda ● Pulsar in Yahoo/Verizon Media ● Multi tenancy ● Security ● SNI routing and proxy support ● Future ● QA 3
  • 4. Pulsar journey in Yahoo ● Developed as a hosted pub-sub service within Yahoo/VMG ○ open-sourced in 2016 ● Global deployment ○ 6 DC (Asia, Europe, US) ○ full mesh replication ● Mission critical use cases ○ Serving applications ○ Lower latency bus for use by other low latency services ○ Write availability 4
  • 5. ● Pulsar scale and storage evolution talk https://pulsar-summit.org/en/event/virtual-conference-2020/sessions/pulsar-storage-on-bookkeepe r-seamless-evolution ● Pulsar growth since 2015 ○ 120+ tenants and 15M rps ○ Storage evolution : HDD, SDD, NVMe, PMEM ○ On-prem, public-cloud and cross org integration ● Scale but what about multi-tenancy? Scale & Multi-Tenancy 5
  • 6. 6 Secured multi-tenant system with Apache Pulsar
  • 7. Multi-tenancy & Security Requirement 7 Multi-tenancy Tenant and Namespace IO isolation Quota and Throttling Broker and Bookie isolation Anti-affinity group Security Authentication & Authorization Encryption in transit Encryption at rest Pulsar proxy Support ATS, HAProxy, Nginx
  • 9. Tenant ● Highest level of provisioning ● Unit of administration ● Managed by Pulsar administrators ● Usually one team 9 Tenant and Namespace Namespace ● Middle level of provisioning ● Unit of data policy ● Managed by Pulsar administrators and/or Tenants ● Usually one application/use case persistent://tenant/namespace/topic
  • 10. 1. Portal find User to Team mapping 2. User creates or modifies tenant ○ Tenant name, Admin Authorization Principals ○ Clusters, WPS & RPS Estimates ○ Jira project, Contact Info, Documentation Link 3. Portal reviews capacity & calls Admin API to manage tenant ○ Jira ticket for Pulsar operator if needed 10 Self-Service Tenant Management
  • 11. 11 IO Isolation Writer Reader Journal Data File Data Device Journal Device Write Reads (cold)
  • 12. Storage Quota ● Tenant-controlled ● Namespace-level and Topic-level ● Storage Limit ● Policy Throttling ● Pulsar Administrator-controlled ● Namespace-level ● Publish Rate (broker) ● Dispatch Rate ● Replicator Dispatch Rate ● Max ○ Producers ○ Subscriptions ○ Consumers ○ Unacked Messages 12 Quota & Throttling
  • 13. Broker Isolation ● Regex of Namespaces to Regex of Brokers/IP Range ● Primary and Secondary broker Regexes 13 Broker Isolation Why ● High Profile/Reserved capacity ● Misbehaving tenants ● Debugging bin/pulsar-admin ns-isolation-policy set --auto-failover-policy-type min_available --auto-failover-policy-params min_limit=5,usage_threshold=80 --namespaces ‘my-tenant/.*’ --primary ‘broker-mytenant[0-9]+.mydomain’ --secondary ‘spare[0-9]+.mydomain’ my-cluster policy-name
  • 14. Bookie Isolation ● Bookies to “Affinity Group” ● Namespace(s) to Primary/Secondary Affinity Group ● Rack-Aware within group 14 Bookie Isolation Why ● SLA ● High Profile/Reserved capacity bin/pulsar-admin bookies set-bookie-rack -b 1.1.1.1:3181 -g group-bookie1 --hostname bookie1.mydomain -r /default-rack ... bin/pulsar-admin namespaces set-bookie-affinity-group my-tenant/my-namespace1 --primary-group group-bookie1
  • 15. ● Common unit of failure for multiple brokers 15 Failure Domain bin/pulsar-admin clusters create-failure-domain cluster-name --domain-name domain-1 --broker-list broker-1,broker-2 Broker-1 Broker-2 Domain-1 Broker-3 Broker-4 Domain-2 Namespace-1 Namespace-2 Namespace-3 Namespace-4 1 2 3 4 Loadbalancer: Namespace assignment sequence Anti-affinity-namespaces: “Namespace-X”
  • 16. ● Assign Namespaces to Anti-Affinity Group ● Changes Load Balancer Behavior 16 Anti-affinity group bin/pulsar-admin namespaces set-anti-affinity-group tenant/namespace1 --group tenant-aag-a bin/pulsar-admin namespaces set-anti-affinity-group tenant/namespace2 --group tenant-aag-a Broker-1 Broker-2 Domain-1 Broker-3 Broker-4 Domain-2 Namespace-1 Namespace-2 Namespace-3 Namespace-4 1 2 3 4 Loadbalancer: Namespace assignment sequence Anti-affinity-namespaces: “Namespace-X”
  • 18. ● Authentication ○ TLS Authentication ○ Athenz ○ Kerberos ○ JSON Web Token Authentication ○ Pluggable authentication provider ● Authorization ○ Pluggable authorization provider ○ Default authorization provider on metadata service 18 Authentication & Authorization
  • 19. 19 Encryption over the wire PulsarClient client = PulsarClient.builder() .serviceUrl("pulsar+ssl://pulsar-broler:6651/") .tlsTrustCertsFilePath("/ca.cert.pem") .authentication(AUTH, "tlsCertFile:/cert.pem,"+"tlsKeyFile:/key.pem") .enableTlsHostnameVerification(true) .build();
  • 20. Producer creation Producer producer = pulsarClient.newProducer() .topic( "persistent://my-tenant/my-ns/my-topic" ) .addEncryptionKey("myappkey") .cryptoKeyReader(new MyCryptoKeyReader()) .create(); 20 Encryption at rest Consumer creation Consumer consumer = pulsarClient.newConsumer() .topic( "persistent://my-tenant/my-ns/my-topic" ) .subscriptionName( "my-subscriber-name" ) .cryptoKeyReader(new MyCryptoKeyReader()) .subscribe();
  • 21. ● Proxy for hybrid could application ● Gateway in a cloud environment or on Kubernetes 21 Pulsar Proxy: Public cloud access Proxy Configuration brokerServiceURLTls=pulsar+ssl://brokers.example.com:6651 brokerWebServiceURLTls=https://brokers.example.com:8443
  • 22. ● Proxy server creates a TLS tunnel between remote client and server ● The goal is to enable external clients to connect to internal services and do their own client certificate verification, possibly because distribution of private keys to the edge Traffic Server instances is too difficult or too risky. 22 Support Layer-4 SNI Routing
  • 23. 23 Pulsar client: SNI Routing PulsarClient client = PulsarClient.builder() .serviceUrl("pulsar+ssl://pulsar-broker:6651/") .enableTls(true).tlsTrustCertsFilePath("/ca.cert.pem") .proxyServiceUrl(proxyUrl, ProxyProtocol.SNI) .authentication(AUTH, "tlsCertFile:/cert.pem,"+"tlsKeyFile:/key.pem") .build();
  • 24. 24 Cross Organization geo-replication pulsar-admin clusters create orgB-cluster --broker-url-secure pulsar+ssl:// orgB-broker-vip:6651 --proxy-protocol SNI --proxy-url pulsar+ssl:// orgA-proxy:443 pulsar-admin clusters create orgA-cluster --broker-url-secure pulsar+ssl:// orgA-broker-vip:6651 --proxy-protocol SNI --proxy-url pulsar+ssl:// orgB-proxy:443 For more info: PIP-60: https://github.com/apache/pulsar/wiki/PIP-60%3A-Support-Proxy-server-with-SNI-routing
  • 25. Future Roadmap ● Tenant based broker virtualization ○ Container based brokers on BookKeeper service ● Hybrid cloud deployment with geo-replication 25
  • 27. Thank you Rajan Dhabalia rdhabalia@verizonmedia.com Ludwig Pummer ludwig@verizonmedia.com