In production, do I have to have two domains if I want to use a load balancer with Discourse?

Discourse is not different than any other web application in that regard

graph TD
    User[User]
    LoadBalancer[Load Balancer]
    WebAppCluster[Discourse Web App Cluster, N identical instances]
    Postgres[PostgreSQL]
    Redis[Redis]
    S3[Object Storage]

    User -->|Request| LoadBalancer
    LoadBalancer -->|Distributes requests| WebAppCluster
    WebAppCluster -->|Read/Write| Postgres
    WebAppCluster -->|Cache| Redis
    WebAppCluster -->|Stores static assets| S3